Iphone 核心数据删除对象在启动时重新出现
我有一些核心数据条目,它们都是在应用程序启动时提取并抛出到数组中的。 当我使用Iphone 核心数据删除对象在启动时重新出现,iphone,core-data,object,Iphone,Core Data,Object,我有一些核心数据条目,它们都是在应用程序启动时提取并抛出到数组中的。 当我使用deleteObject:从核心数据中删除一个对象时,我会通过再次读取所有核心数据条目来刷新此数组,并将它们放入数组中。在这里,核心数据对象被正确删除,并且不会加载到新阵列中。但当我再次启动应用程序时,条目不会被删除。它们再次加载 有人知道为什么我的核心数据对象没有被正确删除吗 这是我删除对象的地方: // Define our table/entity to use NSEntityDescription *en
deleteObject:
从核心数据中删除一个对象时,我会通过再次读取所有核心数据条目来刷新此数组,并将它们放入数组中。在这里,核心数据对象被正确删除,并且不会加载到新阵列中。但当我再次启动应用程序时,条目不会被删除。它们再次加载
有人知道为什么我的核心数据对象没有被正确删除吗
这是我删除对象的地方:
// Define our table/entity to use
NSEntityDescription *entity = [NSEntityDescription entityForName:@"Notes" inManagedObjectContext:managedObjectContext];
// Setup the fetch request
NSFetchRequest *request = [[NSFetchRequest alloc] init];
[request setEntity:entity];
// Fetch the records and handle an error
NSError *error;
NSMutableArray *allNotes = [[NSMutableArray alloc] initWithArray:[[managedObjectContext executeFetchRequest:request error:&error] mutableCopy]];
for(int i = 0; i < [allNotes count]; i++) {
if([[allNotes objectAtIndex:i] identifier] == [[note objectAtIndex:0] identifier]) {
[managedObjectContext deleteObject:[allNotes objectAtIndex:i]];
NSLog(@"DELETING..");
NSLog(@"%@", [allNotes objectAtIndex:i]);
}
}
[request release];
下面是我使用NSLog
打印的一些数据。这可能有助于解决问题,并将显示这些注释已删除,但已重新应用
2011-04-25 20:11:40.877 Caltio[4039:707] NOTES ON STARTUP
2011-04-25 20:11:40.888 Caltio[4039:707] (
"<Notes: 0x1855d0> (entity: Notes; id: 0x184cd0 <x-coredata://DC8B3294-6D87-4236-9E5C-29E11F7330FA/Notes/p2> ; data: <fault>)",
"<Notes: 0x1858b0> (entity: Notes; id: 0x184ce0 <x-coredata://DC8B3294-6D87-4236-9E5C-29E11F7330FA/Notes/p3> ; data: <fault>)"
)
2011-04-25 20:16:41.561 Caltio[4039:707] DELETING..
2011-04-25 20:16:41.569 Caltio[4039:707] <Notes: 0x1855d0> (entity: Notes; id: 0x184cd0 <x-coredata://DC8B3294-6D87-4236-9E5C-29E11F7330FA/Notes/p2> ; data: {
added = "2011-04-25 17:56:15 +0000";
identifier = 2567446185;
note = Test;
updated = 0;
})
2011-04-25 20:16:41.589 Caltio[4039:707] NOTES AFTER REFRESH:
2011-04-25 20:16:41.595 Caltio[4039:707] (
"<Notes: 0x1858b0> (entity: Notes; id: 0x184ce0 <x-coredata://DC8B3294-6D87-4236-9E5C-29E11F7330FA/Notes/p3> ; data: {\n added = \"2011-04-25 17:57:26 +0000\";\n identifier = 2567446127;\n note = Test;\n updated = 0;\n})"
)
2011-04-25 20:17:05.103 Caltio[4052:707] NOTES ON STARTUP
2011-04-25 20:17:05.115 Caltio[4052:707] (
"<Notes: 0x1bee60> (entity: Notes; id: 0x1be570 <x-coredata://DC8B3294-6D87-4236-9E5C-29E11F7330FA/Notes/p2> ; data: <fault>)",
"<Notes: 0x1bf150> (entity: Notes; id: 0x1bdcd0 <x-coredata://DC8B3294-6D87-4236-9E5C-29E11F7330FA/Notes/p3> ; data: <fault>)"
)
2011-04-25 20:11:40.877计算[4039:707]启动注意事项
2011-04-25 20:11:40.888计算[4039:707](
“(实体:备注;id:0x184cd0;数据:)”,
“(实体:注释;id:0x184ce0;数据:)”
)
2011-04-25 20:16:41.561 Caltio[4039:707]删除。。
2011-04-25 20:16:41.569计算[4039:707](实体:注释;id:0x184cd0;数据:{
新增=“2011-04-2517:56:15+0000”;
标识符=2567446185;
注=试验;
更新=0;
})
2011-04-25 20:16:41.589 Caltio[4039:707]刷新后的注释:
2011-04-25 20:16:41.595 Caltio[4039:707](
“(实体:Notes;id:0x184ce0;数据:{\n added=\“2011-04-25 17:57:26+0000\”;\n identifier=2567446127;\n note=Test;\n updated=0;\n})”
)
2011-04-25 20:17:05.103 Caltio[4052:707]启动注意事项
2011-04-25 20:17:05.115计算[4052:707](
“(实体:注释;id:0x1be570;数据:)”,
“(实体:注释;id:0x1bdcd0;数据:)”
)
是否保存managedObjectContext
?据我所知,添加、修改和删除对象只会真正影响它们在内存中的表示。您还需要保存上下文以将其持久化。在我的AppDelegate中,有一个名为-(void)saveContext的方法,它是在创建项目时添加的。我猜managedObjectContext
保存在这里。除此之外,我什么也不做。还有其他保存方法吗?NSManagedObjectContext
有一个名为save:
的方法。应用程序委托中的saveContext
版本(假设您引用的版本是模板中的版本)仅在应用程序终止时保存。当然,在iOS4中,这几乎是不可能的。太棒了!我以为它是用saveContext
保存的。非常感谢你!现在我明白了。真棒:-)
2011-04-25 20:11:40.877 Caltio[4039:707] NOTES ON STARTUP
2011-04-25 20:11:40.888 Caltio[4039:707] (
"<Notes: 0x1855d0> (entity: Notes; id: 0x184cd0 <x-coredata://DC8B3294-6D87-4236-9E5C-29E11F7330FA/Notes/p2> ; data: <fault>)",
"<Notes: 0x1858b0> (entity: Notes; id: 0x184ce0 <x-coredata://DC8B3294-6D87-4236-9E5C-29E11F7330FA/Notes/p3> ; data: <fault>)"
)
2011-04-25 20:16:41.561 Caltio[4039:707] DELETING..
2011-04-25 20:16:41.569 Caltio[4039:707] <Notes: 0x1855d0> (entity: Notes; id: 0x184cd0 <x-coredata://DC8B3294-6D87-4236-9E5C-29E11F7330FA/Notes/p2> ; data: {
added = "2011-04-25 17:56:15 +0000";
identifier = 2567446185;
note = Test;
updated = 0;
})
2011-04-25 20:16:41.589 Caltio[4039:707] NOTES AFTER REFRESH:
2011-04-25 20:16:41.595 Caltio[4039:707] (
"<Notes: 0x1858b0> (entity: Notes; id: 0x184ce0 <x-coredata://DC8B3294-6D87-4236-9E5C-29E11F7330FA/Notes/p3> ; data: {\n added = \"2011-04-25 17:57:26 +0000\";\n identifier = 2567446127;\n note = Test;\n updated = 0;\n})"
)
2011-04-25 20:17:05.103 Caltio[4052:707] NOTES ON STARTUP
2011-04-25 20:17:05.115 Caltio[4052:707] (
"<Notes: 0x1bee60> (entity: Notes; id: 0x1be570 <x-coredata://DC8B3294-6D87-4236-9E5C-29E11F7330FA/Notes/p2> ; data: <fault>)",
"<Notes: 0x1bf150> (entity: Notes; id: 0x1bdcd0 <x-coredata://DC8B3294-6D87-4236-9E5C-29E11F7330FA/Notes/p3> ; data: <fault>)"
)