扩展

swift
阅读 59 收藏 0 点赞 0 评论 0

notes.swift

import Foundation
import FirebaseDatabase

class CreateOfferPresenter: CreateOfferModuleInput {

    private var pictures = [String]()
    private var catKey: String?
    private var key: String?
    private var name: String?
    private var text: String?

    func setKeys(_ catKey: String, _ key: String) {
        self.catKey = catKey
        self.key = key
    }

    private func onDidEndEditing(type: EtFieldType, value: String?) {
        switch type {
        case .name: self.name = value
        case .text: self.text = value
        default: print("CreateOfferPresenter, onDidEndEditing, value: \(String(describing: value))")
        }
    }

    fileprivate let interactor: CreateOfferInteractorProtocol
    fileprivate let router: CreateOfferRouterProtocol
    var viewBuilder: ViewBuilder!

    init(interactor: CreateOfferInteractorProtocol, router: CreateOfferRouterProtocol) {
        self.interactor = interactor
        self.router = router
    }

    // MARK: - Weak properties
    weak var view: CreateOfferViewInput? {
        didSet {
            setupView()
        }
    }
}

// MARK: Setup View
extension CreateOfferPresenter {
    func setupView() {

        view?.onViewDidLoad = { [weak self] in
            guard let catKey = self?.catKey else { return }
            guard let key = self?.key else { return }
            guard let `self` = self else { return }

            self.interactor.fetchOfferDetail(catKey, key) { snap in
                var (models, pictures) = self.parseOfferDetail(snap)

                self.pictures = pictures
                self.view?.configureView()
                models.append(ImagePickerModel(key: "key"))
                self.view?.showOfferForm([ImagePickerModel(key: "key")])
            }
        }

        view?.onRequestedViewforImagePickerCell = { [weak self] key in
            guard let `self` = self else { return nil }
            return self.viewBuilder.build(forKey: key, data: self.pictures)
        }

        view?.onCancelBtnTap = { [weak self] in
            self?.router.dismissModalViewController()
        }

        view?.onDoneBtnTap = { [weak self] in
            self?.router.dismissModalViewController()
        }
    }
}

extension CreateOfferPresenter {

    private func parseOfferDetail(_ snap: DataSnapshot) -> ([AnyObject], [String]) {
        let offer = OfferModel(snap)

        var models = [AnyObject]()
        let titleField = EditTextFieldModel(offer.name, R.string.localizable.hint_title(), fieldType: .name, self.onDidEndEditing)

        let titleText = EditTextFieldModel(offer.name, R.string.localizable.hint_text(), fieldType: .text, self.onDidEndEditing)

        models.append(titleField)
        models.append(titleText)
        return (models, offer.pictures ?? [])
    }
}





    let images = [
        "https://firebasestorage.googleapis.com/v0/b/samuiplus-9d4b0.appspot.com/o/categories%2Foffers%2F-L7ZLum7uwZ7IAS1gP0n%2F-L7bM1f2aYGGwLNCDSNr%2Fimg_1518014663757.jpg?alt=media&token=34095b90-a53a-4413-8e67-f5633d154c1f",
        "https://firebasestorage.googleapis.com/v0/b/samuiplus-9d4b0.appspot.com/o/categories%2Foffers%2F-L85HnRFlWJJwZeqHtLn%2F%D0%A1%D1%80%D0%B5%D0%B4%D0%B8-%D1%80%D0%B8%D1%81%D0%BE%D0%B2%D1%8B%D1%85-%D0%BF%D0%BE%D0%BB%D0%B5%D0%B8%CC%86-%D0%BE.-%D0%91%D0%B0%D0%BB%D0%B8-%D0%98%D0%BD%D0%B4%D0%BE%D0%BD%D0%B5%D0%B7%D0%B8%D1%8F.jpg?alt=media&token=96f4fbec-ca21-47ec-a776-af9551413c1a",
        "https://firebasestorage.googleapis.com/v0/b/samuiplus-9d4b0.appspot.com/o/categories%2Foffers%2F-L85H0HTGT6s704K8qpt%2Fimages%20(62).jpg?alt=media&token=5b9c2537-2809-45a0-8a7d-48294ae974ca"]
extensiont.swift


extension Dictionary where Key == String, Value == Any {
    mutating func setValue(key: Key, value: Value?) {
        if (value != nil) {
            if value is String {
                let val = value as! String
                if (val.isEmpty) {
                    self[key] = NSNull()
                }
            } else {
                self[key] = value }
            }
        else { self[key] = NSNull() }
    }
    
extension Optional {
    func unwrapOrNSNull() -> Any {
        return self ?? NSNull()
    }
}

extension Optional where Wrapped == String {
    func unwrapOrNSNull() -> Any {
        if (self == nil || self!.isEmpty) {
            return NSNull()
        } else {
            return self!
        }
    }
}
评论列表


问题


面经


文章

微信
公众号

扫码关注公众号