我有两个NSManagedObject
子类,Book
和Category
. 两者是一对多的关系。
另一方面Book
,它与 有categories
关系Category
。反向Category
连接到Book
via books
。
我的应用程序设置是每次打开应用程序时从我的服务器下载数据。下载的数据将被遍历并保存在应用程序中。在我的应用程序中,我使用Magical Record与 CoreData 进行交互。
Category
数据将首先下载,然后以 JSON 格式保存:
{
"categories" : [
{
"id" : 1,
"name" : "Fiction"
},
{
"id" : 2,
"name" : "Non-fiction"
}
]
}
保存没有问题Category
。而稍后应用生命周期Book
数据将以 JSON 格式保存,如下所示:
{
"books" : [
{
"id" : 1,
"name" : "Fiction 1",
"category_id" : 1
},
{
"id" : 2,
"name" : "Fiction 2",
"category_id" : 2
}
]
}
当我想将Book
关系分配给Category
. 我分配关系的代码:
for (NSDictionary *bookInfo in jsonObject[@"books"]) {
Book *book = [Book createEntity];
book.identifier = bookInfo[@"id"];
book.name = bookInfo[@"name"];
Category *category = [Category findFirstByAttribute:@"identifier" withValue:bookInfo[@"category_id"]];
book.category = category;
[[NSManagedObjectContext contextForCurrentThread] saveNestedContexts];
}
在第一个循环中,bookObject 被成功保存。但是在第二个循环和下一个循环中,Category
不能再查询了。它返回 nil,尽管identifier
是相同的。
我确实对所有Category
通孔进行了检查[Category findAll]
并遍历了所有记录,发现Category
在第二个和下一个循环中仍然存在具有相同 id 的。
问题是为什么在第二个循环findFirstByAttribute:withValue:
中检索失败?Category