【发布时间】:2011-04-25 18:16:23
【问题描述】:
我有一些核心数据条目,它们在应用程序启动时全部被提取并放入一个数组中。
当我使用deleteObject: 从Core Data 中删除一个对象时,我通过再次读取所有Core Data 条目来刷新这个数组并将它们放入数组中。在这里,Core Data 对象被正确删除并且没有加载到新数组中。但是当我再次启动应用程序时,条目不会被删除。它们再次加载。
有人知道为什么我的核心数据对象没有被正确删除吗?
这是我删除对象的地方:
// 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];
这就是我在启动时设置核心数据条目数组的方式
// 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;
globalNotes = [[NSMutableArray alloc] initWithArray:[[managedObjectContext_ executeFetchRequest:request error:&error] mutableCopy]];
[request release];
NSLog(@"NOTES ON STARTUP");
NSLog(@"%@", globalNotes);
这是我使用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>)"
)
【问题讨论】: