我有一个项目,有一对多的关系。我正在尝试更新核心数据。我有核心数据

若要添加和更新,请使用以下代码
NSManagedObjectContext *context = [self managedObjectContext];
if (self.contactdb) {
// Update existing device
[self.contactdb setValue:self.name.text forKey:@"name"];
//------------- ???? --------------------
} else {
// Create a new device
NSManagedObject *newDevice = [NSEntityDescription insertNewObjectForEntityForName:@"Name" inManagedObjectContext:context];
[newDevice setValue:self.name.text forKey:@"name"];
for (int i = 0 ; i< appDelegate.TimeOfReceipt.count; i++) {
NSManagedObject *timeinday = [NSEntityDescription insertNewObjectForEntityForName:@"Timeinday" inManagedObjectContext:context];
TimeCell *p1 = [appDelegate.TimeOfReceipt objectAtIndex:i];
[timeinday setValue:p1.dateOfTime forKey:@"timeinday"];
[timeinday setValue:[NSNumber numberWithInt:i] forKey:@"index"];
[timeinday setValue:newDevice forKey:@"name"];
}
}
NSError *error = nil;
// Save the object to persistent store
if (![context save:&error]) {
NSLog(@"Can't Save! %@ %@", error, [error localizedDescription]);
}我如何更新时辰?
发布于 2014-02-24 13:37:21
NSManagedObjectContext *context = твой контекст;
NSPredicate *pred = [NSPredicate predicateWithFormat:@"name.name like[cd] %@",@"Нужный name у Name"];
NSEntityDescription *ed = [NSEntityDescription entityForName:@"Timeindays" inManagedObjectContext:context];
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
[fetchRequest setEntity:ed];
[fetchRequest setPredicate:pred];
fetchRequest.includesPropertyValues = NO;
fetchRequest.includesSubentities = NO;
NSError *error;
NSArray *items = [context executeFetchRequest:fetchRequest error:&error];
if (error) {
NSLog(@"Error requesting items from Core Data: %@", [error localizedDescription]);
}
for (NSManagedObject *managedObject in items) {
[context deleteObject:managedObject];
}
if (![context save:&error]) {
NSLog(@"Error deleting %@ - error:%@", ed, [error localizedDescription]);
}Илипросто
//Выбери нужный Name, потом:
for (NSManagedObject *managedObject in name.timeinday) {
[context deleteObject:managedObject];
}
if (![context save:&error]) {
NSLog(@"Error deleting %@ - error:%@", ed, [error localizedDescription]);
}发布于 2014-02-24 13:25:26
您最好在Xcode中创建托管对象子类,因为它将添加许多在集成到多个关系时可以使用的适当类型的方法。然后,使用这些方法而不是setValue:forKey:。
在你的情况下,虽然你应该这样做,但你的关系是1:-多,所以你可以设置1结尾:
[newDevice setValue:timeinday forKey:@"timeinday"];https://stackoverflow.com/questions/21989036
复制相似问题