我查看了Core Data的所有类文档,但我无法通过编程方式更新核心数据实体中的值。例如,我有一个类似于此的结构:
A | 30 |保存
B | 20 |保存
C | 12 |条目
此外,我正在第二次运行值
A | 30 |保存
B | 20 |的 条目
C | 12 |条目
我希望唯一突出显示的值必须是核心数据的更新
请任何人帮助我,提前谢谢
答案 0 :(得分:1)
在CoreData中,插入/更新/删除任何模型对象非常简单。让我们假设您有一个名为MyObject的托管对象实体。在其托管对象子类中,您有三个属性:
@property (nonatomic, retain) NSString * name;
@property (nonatomic, retain) NSString * age;
@property (nonatomic, retain) NSString * type;
现在,如果要向此实体插入值,则必须执行以下操作:
AppDelegate *appDelegate = [[UIApplication sharedApplication] delegate];
NSManagedObjectContext *managedObjectContext = [appDelegate managedObjectContext];
MyObject *myObject = [NSEntityDescription insertNewObjectForEntityForName:@"MyObject" inManagedObjectContext:managedObjectContext];
myObject.name = @"a";
myObject.age = @"30";
myObject.type = @"type";
NSError *error;
if([managedObjectContext save:&error])
{
// success alert
}
要更新您的对象,这是一个更容易的过程。假设您以前保存了名为myObject的模型对象类的实例。你要做的就是更新这个,如下所示:
myObject.name = @"a";
myObject.age = @"30";
myObject.type = @"type";
NSError *error;
if([managedObjectContext save:&error])
{
// success alert
}
要删除此myObject实例:
[managedObjectContext deleteObject:myObject];
NSError *error;
if([managedObjectContext save:&error])
{
// success alert
}
我希望这会有所帮助。干杯!
答案 1 :(得分:0)
首先,您必须找到名为B的对象。然后,您可以更改其类型属性并再次保存。
请记住,“name”必须是唯一的列。如果没有,您可能想要创建一个像“id”之类的唯一值。如果有多个名为“B”的记录,则以下代码将更改第一个记录的值。
- (void)changeTheValue
{
NSArray* response;
@try {
// Fetch the record from db
NSManagedObjectContext *managedObjectContext = [self managedObjectContext];
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] initWithEntityName:@"Entities"];
NSPredicate *predicate = [NSPredicate predicateWithFormat:
@"(Name == B)"];
[fetchRequest setPredicate:predicate];
response = [[managedObjectContext executeFetchRequest:fetchRequest error:nil] mutableCopy];
}
@catch (NSException *exception) {
NSLog(@"%@",exception);
}
@finally {
// Now we have the object that we're looking for, we can update it
[[response firstObject] setValue:@"Entry" forKey:@"Type"];
[self saveData];
}
}
- (void)saveData
{
NSError *error = nil;
@try {
[self.managedObjectContext save:&error];
}
@catch (NSException *exception) {
NSLog(@"Error saving: %@",error);
}
@finally {
NSLog(@"Success saving");
}
}