Фреймворк внутри фреймворка падает при загрузке xib swift 5 - PullRequest
0 голосов
/ 13 февраля 2020

Я добавил пользовательский интерфейс Xib в сторонние фреймворки и сделал из него новую, называемую F3.framework, теперь я добавил оболочку над F3 и создал новую фреймворк под названием F4.

Мое приложение подключено к F4, а с F4 я звоню F3, а внутри F3 у меня есть один xib и несколько других сторонних фреймворков.

Я подключил свое приложение к F3, после чего оно работало нормально, но когда я представил F4, он начал падать, говоря ** Ошибка автоматического связывания с другими фреймворками, которые я использовал для сборки F4.frameworks **

тогда я переместил коды моего контроллера представления приложения в F4.framework, теперь приложение зависало

Unknown class _TtC12QKMRZScanner7scanner in Interface Builder file

Вот как я звоню из своего приложения

import F4

Когда я нажимаю, чтобы открыть свой XIB внутри фреймворка через нажатие кнопки

 @IBAction func capture(_ sender: Any) {
        let pla = F4()
        let c =  pla.load()
        pla.startCapture()
        self.view.addSubview(c)

    }

Теперь в моем коде F4.framework есть только один файл, который

import Documents

public class F4 : ScanProtocol{

    var d: scanner!  //scanner is a UIView class in F3.framework

    public func scanResult(dictResult: [String : Any]) {
        print(dictResult)
    }

      let document = Documents()

     public init(){
      print("loading")
    }

    public func startCapturingPassport(){

        document.captureFromDocument() 
    }

    public func loadScanner() -> scanner{
        d = UINib(nibName: "scanner", bundle: Bundle(for: scanner.self)).instantiate(withOwner: nil, options: nil)[0] as! scanner
        d.delegate = self
    return d
    }



Теперь в F3.framework я использую следующий код


public class F3 {


    /// #TODO
    public init(){

    }



    /// CaptureMRZCodeFromDocument will call when user click on MRZ option and it will return the MRZ value

    public func captureFromDocument(){
       let mrz = scanner()
        mrz.capture()
    }





Из F3.framework он будет вызывать capture () в scanner.swift, как показано ниже

import QKMRZScanner
import QKMRZParser

public protocol ScanProtocol{
    func scanResult(dictResult : [String : Any])
}

public class scanner: UIView,QKMRZScannerViewDelegate {

    public var delegate: ScanProtocol?
    var mrzScannerView: QKMRZScannerView!
    var validatedMRZData: Dictionary<String, Any>!

public func mrzScannerView(_ mrzScannerView: QKMRZScannerView, didFind scanResult: QKMRZScanResult) {
    //Validate the data
    let scanValidation = ScannerValidation()
    validatedMRZData = scanValidation.ValidateMRZData(result: scanResult)
    delegate?.scanResult(dictResult: validatedMRZData)
}



override init(frame: CGRect) {
    super.init(frame: frame)
    mrzScannerView = QKMRZScannerView(frame: self.bounds)
    mrzScannerView.delegate = self
    addSubview(mrzScannerView)
    mrzScannerView.autoresizingMask = [.flexibleHeight, .flexibleWidth]
}

required init?(coder: NSCoder) {
    super.init(coder: coder)
    mrzScannerView = QKMRZScannerView(frame: self.bounds)
    mrzScannerView.delegate = self
    addSubview(mrzScannerView)
    mrzScannerView.autoresizingMask = [.flexibleHeight, .flexibleWidth]
}

private func commitinit(){
    mrzScannerView = Bundle.main.loadNibNamed("scanner", owner: self, options: nil) as? QKMRZScannerView
    addSubview(mrzScannerView)
    mrzScannerView.frame = self.bounds
    mrzScannerView.autoresizingMask = [.flexibleHeight, .flexibleWidth]
}

public func capture(){
    mrzScannerView.delegate = self

    mrzScannerView.startScanning()
}





Это CRA SH, который я получаю сейчас

2020-02-13 21:39:48.955020+0530 MRZ[32832:608471] [Storyboard] Unknown class _TtC12QKMRZScanner7scanner in Interface Builder file.
2020-02-13 21:39:48.955585+0530 MRZ[32832:608471] [Storyboard] Unknown class _TtC12QKMRZScanner16QKMRZScannerView in Interface Builder file.
Could not cast value of type 'UIView' (0x1d620e4b8) to 'F3.scanner' (0x1050fd998).
2020-02-13 21:39:48.957236+0530 MRZ[32832:608471] Could not cast value of type 'UIView' (0x1d620e4b8) to 'F3.scanner' (0x1050fd998).



Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...