我有一個使用Core Data的應用程序,它通過使用UIManagedObject獲取它的ManagedObjectContext。從閱讀中,我發現我並不是直接保存上下文 - 而是應該依賴UIManagedObject的自動保存或使用saveToURL:...我的問題是我想驗證存儲在我的實體中的數據。我對指定字符串屬性的最小長度爲1的實體有約束。但是,我可以創建一個新對象,將其屬性指定爲空字符串,並保存該文件。在saveToURL的完成處理程序中:...它始終具有真正的成功價值。然後,我爲我的實體的名稱屬性創建了自己的驗證器。我使用的示例代碼從核心數據編程指南 -UIManagedDocument - 驗證核心數據實體
-(BOOL)validateName:(id *)ioValue error:(__autoreleasing NSError **)outError
{
if (*ioValue == nil)
{
if (outError != NULL)
{
NSString *errorStr = @"nil error";
NSDictionary *userInfoDict = [NSDictionary dictionaryWithObject:errorStr
forKey:NSLocalizedDescriptionKey];
NSError __autoreleasing *error = [[NSError alloc] initWithDomain:@"domain"
code:1
userInfo:userInfoDict];
*outError = error;
}
return NO;
}
else if([*ioValue length] == 0)
{
if (outError != NULL) {
NSString *errorStr = @"length error";
NSDictionary *userInfoDict = [NSDictionary dictionaryWithObject:errorStr
forKey:NSLocalizedDescriptionKey];
NSError __autoreleasing *error = [[NSError alloc] initWithDomain:@"domain"
code:1
userInfo:userInfoDict];
*outError = error;
}
return NO;
}
else
{
return YES;
}
}
在運行此,我看到ioValue具有0長度,它返回NO,但後來我完成處理程序不會被調用。任何幫助都會很棒。
有什麼我缺少如何處理與UIManagedDocument保存錯誤 - 特別是如何通知調用代碼,保存其信息時發生錯誤。