我将对象保存到 JSON 的核心数据中,我使用 for
循环(假设我调用了这个 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(code=1, address 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)
}
}
}
关于ios - 删除核心数据中的重复对象(快速),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30334670/