我使用两个持久存储:第一个是默认(内置)应用程序数据的只读,第二个是用户数据的读写。一旦用户在第二个存储中添加任何数据,就会出现此问题。在这种情况下,在执行performFetch: NSFetchedResultsController方法期间,我在调试控制台中看到以下消息:
CoreData: error: batched fetch request asked to fetch 1 objects but
received 2 objects as (
"entity: Product; id: 0xd000000000340002 <x-coredata://A570FA00-5B60-4C21-A9B1-8A49C2AAC58B/Product/p13> ; data: <fault>)",
"entity: Product; id: 0xd000000000340004 <x-coredata://84F31C0F-844D-44DD-BB2F-CC766BED8331/Product/p13> ; data: <fault>)"
)
我很清楚 CoreData 将这种情况解释为错误,因为 Managed ObjectIDs 的最后部分是相同的:
Product/p13
出于某种原因,CoreData 没有考虑到这些对象来自不同的商店:A570FA00-5B60-4C21-A9B1-8A49C2AAC58B和84F31C0F-844D-44DD-BB2F-CC766BED8331对应。
除了控制台中的错误消息外,一切正常。但我宁愿不看到它。有没有人知道如何解决这种不同的商店 ObjectID 的冲突?