我将对象保存到 JSON 中的核心数据,这是我使用for
循环(假设我称之为setup
功能。
由于用户可能会停止此循环,因此核心数据中保存的对象将是部分的。用户可以重新启动此setup
函数,重新启动解析和将对象保存到核心数据的过程。
现在,如果我重新启动,我会在核心数据中获得重复的对象setup()
。
该对象有一个属性是id
.
我认为我可以获取最终可能已经存在于核心数据中的第一个对象,将它们保存到一个数组(自定义类型),并测试每个新对象以添加到核心数据(如果已经存在具有相同的对象)id
。
使用的代码如下:
if !existingCards.isEmpty {
for existingCard in existingCards {
if id == existingCard.id {
moc.deleteObject(existingCard)
println("DELETED \(existingCard.name)")
}
}
}
...
// "existingCards is the array of object fetched previously.
// Code to save the object to core data.
实际上,应用程序返回
EXC_BAD_ACCESS(代码=1,地址Ox0)
有没有更简单的方法来实现我的目的,或者我应该修复什么以使我的代码正常工作?我对 swift 很陌生,我想不出其他解决方案。
顺便说一句,主要目的是删除重复的核心数据。
删除重复对象的 Swift 4 代码:
let fetchRequest = NSFetchRequest<NSFetchRequestResult>(entityName: "Card")
var resultsArr:[Card] = []
do {
resultsArr = try (mainManagedObjectContext!.fetch(fetchRequest) as! [Card])
} catch {
let fetchError = error as NSError
print(fetchError)
}
if resultsArr.count > 0 {
for x in resultsArr {
if x.id == id {
print("already exist")
mainManagedObjectContext.deleteObject(x)
}
}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)