什麼在哪裏[MagicalRecord saveWithBlock:completion:]
將顯示NO在完成塊的成功和具有零的錯誤的情況?我見過iOS的:成功的條件是NO和錯誤是零爲[MagicalRecord saveWithBlock:完成:]
的一個條件就是一個取保存塊內的回報爲零,因此沒有保存的事情。但是我看到了保存塊中的提取返回有效的託管對象的情況。
示例代碼:
[MagicalRecord saveWithBlock:^(NSManagedObjectContext *localContext) {
TransactionQueueItem *item = [self queueItemForToken:token context:localContext];
if (nil == item)
NSLog(@"item is nil for token %@", token);
item.lastTryDate = [NSDate date];
if (nil != errorMsg)
item.lastTryError = errorMsg;
}
completion:^(BOOL success, NSError *error) {
if (!success)
{
NSLog(@"Error %@ updating last Try time item for token %@", error, token);
}
else
{
if (nil != completionBlock)
completionBlock();
}
}];
我看到,該項目回來好,但再上保存我獲得成功= NO和錯誤=零,我沒有看到發生了什麼。
各種谷歌/冰搜索沒有指出結論性的結果。謝謝。
但是,如果error = nil,我怎麼知道問題是如何處理的? – chadbag
我無法保存創建的nsobject。我跟了這幫助https://gist.github.com/tonyarnold/4694673#standard-background-save,我可以從MR得到的唯一信息是錯誤==零和contextDidSave == NO。如果我打開詳細的調試,我得到**沒有更改saveWithBlock:完成:**上下文 - 不保存。但有變化。 –
我已修復它。始終在上下文中工作是非常重要的:1)由MR保存api(版本2.3.0+)或作爲屬性存儲的自定義上下文提供的那個。我讓代碼使用一個沒有上下文的代碼,它被發現/創建/更改並且是錯誤的。查看更多http://stackoverflow.com/a/24171856/3389683這裏https://github.com/magicalpanda/MagicalRecord/blob/master/Docs/Working-with-Managed-Object-Contexts.md 這是在創建/更新/刪除可以在saveWithBlock中使用的ns對象的所有方法中有一個參數「inContext:(NSManagedObjectContext *)context」 –