我已经在Apple引用的示例代码中看到了如何处理Core Data错误.即:
NSError *error = nil;
if (![context save:&error]) {
/*
Replace this implementation with code to handle the error appropriately.
abort() causes the application to generate a crash log and terminate. You should not use this function in a shipping application, although it may be useful during development. If it is not possible to recover from the error, display an alert panel that instructs the user to quit the application by pressing the Home button.
*/
NSLog(@"Unresolved error %@, …Run Code Online (Sandbox Code Playgroud) 目前我的所有保存都将转到内存中,但不会写入磁盘(iOS).我的应用程序设置为UITableView带有一个添加模态视图,用于创建内容,当用户完成创建内容并单击保存按钮时,新项目(由我的CoreData模型创建的NSManagedObject类)我打印出来并且完全填写.在此之后我立即尝试将其保存到磁盘,并生成一个错误消息,其中包含相同的对象ID,但字段为nil.然而,在我之间的UITableViews (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath
方法被调用,即记录@"CanEdit".
谁能看到我做错了什么?
这是代码
NSLog(@"newItem %@", newItem);
NSError *error;
if (![newItem.managedObjectContext save:&error]) {
// Handle the error.
NSLog(@"%@", error);
}
if (editItem) {
[self.navigationController popViewControllerAnimated:YES];
} else {
[self dismissModalViewControllerAnimated:YES];
}
Run Code Online (Sandbox Code Playgroud)
这是我的错误
2011-10-22 15:24:46.322 App[42115:fb03] newItem <Item: 0x81a4a30> (entity: Item; id: 0x81a0ab0 <x-coredata:///Item/t7F2B54D2-0DCC-4530-88D5-900BE25C7DC23> ; data: {
containedIn = "0x6e89010 <x-coredata:///Item/t7F2B54D2-0DCC-4530-88D5-900BE25C7DC22>";
contains = (
);
content = a;
dateLastUsed = nil;
depth = 0;
encrypted = 0;
favorite = 0;
favoritePosition = nil; …Run Code Online (Sandbox Code Playgroud) 我正在尝试更新实体并保存更改.我总是得到以下错误:
The operation couldn’t be completed. (Cocoa error 1550.)
Run Code Online (Sandbox Code Playgroud)
方法:
- (BOOL) updateEvent:(EventDTO*)eventDTO{
BOOL saved = YES;
[self getDataCoreContext];
if (context) {
NSError *error;
Event *myEvent = (Event *)[context existingObjectWithID:eventDTO.entitysID error:&error];
myEvent.name = eventDTO.name;
myEvent.descrptn = eventDTO.description;
myEvent.date = eventDTO.date;
myEvent.locLatitude = [eventDTO getLatidude];
myEvent.locLongitude = [eventDTO getLongitude];
myEvent.numberOfInvited= [NSNumber numberWithInteger:[eventDTO.invitedMembers count]];
for (User *invUser in eventDTO.invitedMembers) {
[myEvent addInvitedUsersObject:invUser];
}
for (User *accUser in eventDTO.acceptedMembers) {
[myEvent addAcceptedUsersObject:accUser];
}
myEvent.createdBy = (User*)[context existingObjectWithID:eventDTO.creator.objectID error:&error];
if (![context save:&error]) {
NSLog(@"Whoops, …Run Code Online (Sandbox Code Playgroud) core-data objective-c nsmanagedobject nsmanagedobjectcontext