领域结果数组总计等于1

时间:2017-10-05 07:17:59

标签: ios swift uitableview realm nsarray

我正在使用QRCode扫描仪应用程序,逻辑是当设备扫描代码时,它会将该代码的信息保存到Realm中,用户可以在TableView中看到它们。

但是现在我遇到了一个问题,即使我多次扫描,结果数组总是会返回一个元素。

以下是我保存qrcode对象的代码:

self.barcodesHandler = { barcodes in
        if !self.dispatched {
            self.dispatched = true
            for barcode in barcodes {
                print("Barcode found: type=" + barcode.type + " value=" + barcode.stringValue)
                let barcodeStringArray  = barcode.stringValue.components(separatedBy: ": ")
                let infoVC = ANSProductDetailViewController()
                self.product = ANSProductModel(name: barcodeStringArray[1], manufacturer: barcodeStringArray[2], registerLocation: barcodeStringArray[0], detailUrl: barcodeStringArray[3])
                infoVC.product = self.product
                DispatchQueue.main.async(execute: {
                    infoVC.hidesBottomBarWhenPushed = true
                    self.navigationController?.pushViewController(infoVC, animated: true)
                })
                break
            }
            self.product.saveToLocal()
        }
    }
//ANSProductModel save method, self = ANSProductModel
func saveToLocal() {
    Realm.execute { (realm) in
        realm.add(self, update: true)
        print("Product saved")
    }
}

以及在TableView中检索它们的代码:

var productList: Results<ANSProductModel>!

override func viewDidLoad() {
    super.viewDidLoad()
    let realm = try! Realm()
    productList = realm.objects(ANSProductModel.self)
    tableView.register(UINib(nibName: "ANSProductHistoryCell", bundle: nil), forCellReuseIdentifier: "ANSProductHistoryCell")
    // Do any additional setup after loading the view.
}

请任何人都可以帮助我,我已经尝试了很多,但仍坚持使用它们。非常感谢!

1 个答案:

答案 0 :(得分:0)

基于Real Swift 2.10.2最新文档(https://realm.io/docs/swift/latest/),保存已经相同,您可以尝试这种方式吗?

func saveToLocal() {
    // Get the default Realm
    let realm = try! Realm()

    // Persist your data easily
    try! realm.write {
        realm.add(self)
        print("Product saved")
    }
}

修改:也许您正确保存新数据,请确保在保存后重新加载UITableView