Lee*_*ong 1 iphone core-data objective-c
我有一种情况,我想用一些条目预先填充CoreData DB.由于这是在运行时完成的,因为检测到一些事情,所以我需要在代码中执行此操作.
我有这个代码的问题,它只插入第二个....
Event *event = (Event *)[NSEntityDescription insertNewObjectForEntityForName:@"Event" inManagedObjectContext:managedObjectContext];
[event setLat:[NSNumber numberWithDouble:52.25]];
[event setLon:[NSNumber numberWithDouble:4.75]];
[event setLatspan:[NSNumber numberWithDouble:0.7]];
[event setLonspan:[NSNumber numberWithDouble:0.88]];
[event setName:@"Test, 1"];
// Commit the change.
NSError *error;
if (![managedObjectContext save:&error]) {
NSLog(@"%@",[error description]);
}
[event setLat:[NSNumber numberWithDouble:53.25]];
[event setLon:[NSNumber numberWithDouble:56.75]];
[event setLatspan:[NSNumber numberWithDouble:0.7]];
[event setLonspan:[NSNumber numberWithDouble:0.88]];
[event setName:@"Test 2"];
if (![managedObjectContext save:&error]) {
NSLog(@"%@",[error description]);
}
Run Code Online (Sandbox Code Playgroud)
Bol*_*ock 12
问题是你insertNewObjectForEntityForName:inManagedObjectContext:只调用一次,并使用相同的对象两次.因此,只插入一个项目,修改其现有属性,然后保存对同一对象的更改.
在保存之后,您需要为每个后续项目insertNewObjectForEntityForName:inManagedObjectContext:再次调用相同的event变量(此处生成的托管对象都是自动释放的):
event = (Event *)[NSEntityDescription insertNewObjectForEntityForName:@"Event" inManagedObjectContext:managedObjectContext];
[event setLat:[NSNumber numberWithDouble:53.25]];
[event setLon:[NSNumber numberWithDouble:56.75]];
[event setLatspan:[NSNumber numberWithDouble:0.7]];
[event setLonspan:[NSNumber numberWithDouble:0.88]];
[event setName:@"Test 2"];
if (![managedObjectContext save:&error]) {
NSLog(@"%@",[error description]);
}
Run Code Online (Sandbox Code Playgroud)