【问题标题】:Dynamic Link at MVC modelMVC 模型中的动态链接
【发布时间】:2020-12-13 21:31:38
【问题描述】:

??????????

在此示例中,如何在此更新视图之后随时发送动态链接到服务类 我随时收到链接,我不想使用通知等

  1. 查看

    var viewModel = HomeViewModel()
    
     func configureViewModel() {
         viewModel.resultClosure = { [weak self] listModel in
             guard let image = listModel.uiImage else { return }
             self?.updateImageViewConstraint(nil, image: image)
         }
     }
    
  2. HomveViewModel

    class HomeViewModel {
     var service = Services()
     var listModel = [ListModel]() {
            didSet {
                DispatchQueue.main.async { [weak self] in
                    guard let self = self else {
                        return
                    }
                     self.resultClosure?(self.listModel[0])
                }
            }
        }
    
     let placeholderImage = UIImage(named: "placeholder")
     var updatedImge : UIImage?
     var resultClosure: ((ListModel) -> Void)?
     var stringUrl: StringUrl!
    
     func fetchData() {
         service.makeRequest() { (result: Result<[ListModel]>) in
             switch result {
             case .success(let listModel):
                 self.listModel = listModel                    
                 return
             case .failure(let error):
                 print("\n HomeViewModel fetchData failure \(error) \n")
                 return
             }
         }
     }
    

    }

  3. Services - 这里我需要检查动态链接

    class Services {
     let urlSession: URLSession
     let imageProvider = ImageProvider()
     let dynamicLinkfromStruct = "Dynamic Link From Struct!!!" 
    
    
     init(urlSession: URLSession = .shared) {
         self.urlSession = urlSession
     }
    
    
     func makeRequest(completionHandler: @escaping (Result<[ListModel]>) -> Void) {
    
    
     guard let url = URL(string: dynamicLinkfromStruct) else { return } 
    
         imageProvider.loadImages(from: url) { (image) in
             do {
                 let result = [ListModel.init(imageUrl: self.url, uiImage: image)] 
                 completionHandler(.success(result))
             } catch {
                 completionHandler(.failure(error ))
             }
         }
     }
    }
    
  4. 型号

    struct ListModel {
    
     let imageUrl: String?
     let uiImage: UIImage?
    }
    
  5. 我可以捕捉到我需要在视图中显示的任何时间动态链接的结构。在这里提问! 如何发送服务链接和更新视图???

    struct GetManager {
     static func showContent(pasteboard: String) {
     switch onlyLinkAbsoluteString.validURL {
            case true:
     // How to Send Link to Services and update View???
     }
     }
     }
    

【问题讨论】:

    标签: swift model-view-controller struct


    【解决方案1】:

    在MVVM/MVC通信中应该走这条路

    视图 > ViewModel > 管理器 > 服务

    在 ViewModel 中创建 Manager 实例,在 Manager 中创建 Service 实例

    您在 ViewModel 中调用 Manager 的函数,Manager 将处理与您的 Service 的通信。

    【讨论】:

    • 谢谢你的回复看看这个monosnap.com/file/agDbGydcutDeiDCzfRAL6F2hYbDBQ7
    • 为了帮助您,我们需要最低限度的可重现产品。我们可以通过一两个步骤复制和粘贴的东西,并以最少的代码拥有一个功能齐全的产品。我无法复制和粘贴图片。
    猜你喜欢
    • 2018-03-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-10-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多