是的,我当然在整个互联网上搜索过。 但是无法摆脱这个问题。
我有两个名为的实体: 邮政& PopularPost。 (几乎彼此重复)
当我获取帖子并更新它的属性,如numberoflikes,numberofcomments它是好的。
但是当我拿到PopularPost并尝试更新它的属性时,它说 "乐观锁定失败"
获取并更新并保存实体的MY代码:" PopularPosts"。
{{1}}
答案 0 :(得分:0)
通常,乐观锁定失败是由两个尝试更改相同数据的不同托管对象上下文引起的。我认为如果您不同时从不同的线程访问它,即使使用一个上下文,您也可以遇到此问题。 ManagedObjectContexts 不 线程既不能用于阅读,也不适用于写作。
我已经看到可以从错误的线程访问managedObjectContext的情况,并且在一行代码没有做错的情况下发生崩溃。我建议仔细搜索您的代码,以获取对主线程上没有的核心数据的任何访问。您可以使用[NSThread isMainThread]
检查您是否在主线程上进行调试。
答案 1 :(得分:0)
在我的情况下,这是由于使用newBackgroundContext()
造成的。
我有一个可能运行时间很长的任务,它是在应用程序进入后台时开始的。
即使它在再次使用该应用程序之前完成了,但我发现在后台任务之后进行的所有保存都将失败。
我通过使用viewContext
解决了长期运行的任务。