我想对从iOS领域读取的数据进行线程处理

问题描述 投票:0回答:1

[将数据从ios读取到领域并同时使用线程但是,“从错误的线程访问了领域”。发生错误您的代码有问题吗?

let realm = try! Realm()
        let readData = realm.objects(DataRealm.self)
        for i in 0...readData.count-1 {

            DispatchQueue.global().async {
                self.parsing()
            }
        }
ios realm
1个回答
0
投票

您不能跨线程使用Realm对象。这就是为什么您会收到此错误。但是您可以使用可以跨它们传递的引用。我不确定如何将其应用于您的代码,因为没有任何地方可以使用readData中的单个对象。但是您要搜索的内容可能是这样的:

let realm = try! Realm()
let readData = realm.objects(DataRealm.self)
for data in readData {
    let readDataRef = ThreadSafeReference(to: data)
    DispatchQueue.global().async {
        self.parsing(readDataReference: readDataRef)
    }
}

在您的parsing()方法中,您需要从引用中获取对象,然后:

let data = realm.resolve(readDataReference)
© www.soinside.com 2019 - 2024. All rights reserved.