【发布时间】:2017-03-22 11:07:19
【问题描述】:
是的,我当然在整个互联网上进行了搜索。 但无法摆脱这个问题。
我有两个实体命名: 邮政和大众邮政。 (几乎一模一样)
当我获取帖子并更新它的属性时,比如 numberoflikes、numberofcmets 这很好。
但是当我获取 PopularPost 并尝试更新它的属性时,它会说 “乐观锁定失败”
获取、更新和保存实体的我的代码:“PopularPosts”。
let postpopFetch = NSFetchRequest<NSFetchRequestResult>(entityName: "PopularPosts")
postpopFetch.predicate = NSPredicate(format: "id = %@", postId)
let resultp = try? CoreDataManager.sharedInstance.managedObjectContext.fetch(postpopFetch)
let resultDatap = resultp as! [PopularPosts]
for object in resultDatap {
print(object.numberOfHearts)
if like {
object.numberOfHearts = object.numberOfHearts + 1
object.isLiked = true
}else{
(object.numberOfHearts > 0) ? (object.numberOfHearts = object.numberOfHearts - 1) : (object.numberOfHearts = 0)
object.isLiked = false
}
}
do {
try CoreDataManager.sharedInstance.managedObjectContext.save()
print("saved!")
} catch let error as NSError {
print("Could not save \(error), \(error.userInfo)")
}
【问题讨论】:
-
您的核心数据堆栈是什么样的?你有多少上下文?你有亲子关系吗?你使用 NSPersistentContainer 吗?
-
我在单例类中只维护了一个上下文。没有亲子关系。仅简单的 2 个实体。
-
你总是在主线程上读写吗?
-
@JonRose:有时会涉及后台线程