Iphone 使用核心数据更新属性

Iphone 使用核心数据更新属性,iphone,ios,core-data,nsfetchrequest,Iphone,Ios,Core Data,Nsfetchrequest,我有一个实体有3个属性:firstname、lastname和score。我能够通过名字和姓氏搜索一个人的分数,并将其显示在UILabel上(目前为止还不错)。我的问题是,我不知道如何使用新值更新分数属性。下面是我用来执行搜索和显示旧值的代码 NSEntityDescription *entitydesc = [NSEntityDescription entityForName:@"Scorecard" inManagedObjectContext:context]; NSFetchReques

我有一个实体有3个属性:firstname、lastname和score。我能够通过名字和姓氏搜索一个人的分数,并将其显示在UILabel上(目前为止还不错)。我的问题是,我不知道如何使用新值更新分数属性。下面是我用来执行搜索和显示旧值的代码

NSEntityDescription *entitydesc = [NSEntityDescription entityForName:@"Scorecard" inManagedObjectContext:context];
NSFetchRequest *request = [[NSFetchRequest alloc]init];
[request setEntity:entitydesc];

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"firstname like %@ and lastname like %@", self.firstnameTextField.text, self.lastnameTextField.text];
[request setPredicate:predicate];

NSError *error;
NSArray *integer = [context executeFetchRequest:request error:&error];

if(integer.count <= 0){
    self.displayLabel.text = @"No records found";

}

else {

    NSNumber *score;

    for (NSManagedObject *object in integer) {


       score = [object valueForKey:@"score"];

        int x = [score intValue];

       // New Value is going to be the old value + 2
        int y = x + 2;

      //displays old value found
        [self.displayLabel setText:[NSString stringWithFormat:@"old value %d",x]];

    }

}
NSEntityDescription*EntityDescription=[NSEntityDescription entityForName:@“记分卡”在托管对象上下文:上下文中];
NSFetchRequest*request=[[NSFetchRequest alloc]init];
[请求集合实体:entitydesc];
NSPredicate*谓词=[NSPredicate谓词格式:@“firstname like%@和lastname like%@”,self.firstnameTextField.text,self.lastnameTextField.text];
[请求集谓词:谓词];
n错误*错误;
NSArray*integer=[context executeFetchRequest:request error:&error];

如果(integer.count像以前一样获取对象,则设置它的score属性

[object setValue:[NSNumber numberWithInt:y] forKey:@"score"]; 

像以前一样获取对象,然后设置它的score属性

[object setValue:[NSNumber numberWithInt:y] forKey:@"score"]; 

我的第一个建议是使用NSManagedObject的子类,而不是使用原语


现在,要更改分数,您需要找到需要更改的对象,并分配值。分配值后,您需要保存对象所属的NSManagedObject。一旦上下文成功保存,您的更改将保持不变。

我的第一个建议是使用NSManagedObject的子类,而不是using原语。您可以通过使用核心数据检查器和更改实体类来实现这一点


现在,要更改分数,您需要找到需要更改的对象并分配值。分配值后,您需要保存对象所属的NSManagedObject。一旦上下文成功保存,您的更改将保持不变。

[object setValue:[NSNumber numberWithInteger:[score integerValue]]forKey:@“score”];我添加了这行代码,因为这是一个整数,是我要更新的数字,但当我检查数据时,该数字没有更新任何建议?我没有看到任何更改,因为我再次分配旧值,我的错误。我可以分配“int y”吗"值?我想我差不多到了,但我缺少了一些东西。更新为int y,对不起,没问题,我还应该提到一点-如果创建.xcdatamodeld,那么您可以创建实体,设置它们的属性和关系,并使用核心数据生成的类通过属性与对象交互。Ray Wenderlich有一个great教程[object setValue:[NSNumber numberWithInteger:[score integerValue]]forKey:@“score”];我添加了这行代码,因为整数是我要更新的数字,但当我检查数据时,数字没有更新。有什么建议吗?我没有看到任何更改,因为我再次分配了旧值,我的错误。我能分配“内特y"值?我想我差不多到了,但我缺少了一些东西。更新为int y,对不起,没问题,我还应该提到一点-如果创建.xcdatamodeld,那么您可以创建实体,设置它们的属性和关系,并使用核心数据生成的类通过属性与对象交互。Ray Wenderlich有一个great教程
[object setValue:[NSNumber numberWithInt:y] forKey:@"score"];