我有兩個NSManagedObject
子類,Book
和Category
。這兩者通過一對多的關係相關。設置一對多關係後NSFetchRequest查詢返回nil
在Book
方,它與Category
連接的關係categories
。相反Category
通過books
連接到Book
。
我的應用程序設置是每次打開應用程序時從我的服務器下載數據。下載的數據將被遍歷並保存在應用程序中。在我的應用程序中,我使用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
不能再被查詢。它返回零,儘管identifier
是相同的。
我確實通過[Category findAll]
對所有Category
執行了檢查並遍歷了所有記錄,發現第二個和下一個循環中仍然存在具有相同標識的Category
。
問題是爲什麼findFirstByAttribute:withValue:
未能在第二個循環中檢索Category
?
我剛發現'saveUsingCurrentThreadContextWithBlockAndWait'在每次都會崩潰的''saveWithBlockAndWait''上面的舊版iOS 5設備上工作。感謝您的提示,@Willy。 – 2013-05-10 17:28:46