在ios 7中更新Core Data中的对象

时间:2014-02-05 08:02:17

标签: iphone core-data

我查看了Core Data的所有类文档,但我无法通过编程方式更新核心数据实体中的值。例如,我有一个类似于此的结构:

姓名|年龄|输入

A | 30 |保存

B | 20 |保存

C | 12 |条目

此外,我正在第二次运行值

姓名|年龄|输入

A | 30 |保存

B | 20 |的 条目

C | 12 |条目

我希望唯一突出显示的值必须是核心数据的更新

请任何人帮助我,提前谢谢

2 个答案:

答案 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");
    }
}