Core data 更新核心数据中的属性

Core data 更新核心数据中的属性,core-data,nsfetchrequest,insert-update,Core Data,Nsfetchrequest,Insert Update,我知道这个问题已经被回答了很多次,但我似乎无法让我的问题得到解决 我有一个名为SchoolNames的实体,它有一个名为nameOfSchool的属性。我希望能够更新此属性 NSFetchRequest *fetchRequest = [NSFetchRequest fetchRequestWithEntityName:@"SchoolName"]; fetchRequest.sortDescriptors = [NSArray arrayWithObject:[NSSortDescriptor

我知道这个问题已经被回答了很多次,但我似乎无法让我的问题得到解决

我有一个名为
SchoolName
s的实体,它有一个名为
nameOfSchool
的属性。我希望能够更新此属性

NSFetchRequest *fetchRequest = [NSFetchRequest fetchRequestWithEntityName:@"SchoolName"];
fetchRequest.sortDescriptors = [NSArray arrayWithObject:[NSSortDescriptor sortDescriptorWithKey:@"NameOfSchool" ascending:YES]];
NSError *errorLoading = nil;
self.schoolNames = [context executeFetchRequest:fetchRequest error:&errorLoading];

NSLog(@"%d", self.schoolNames.count );
我可以在
NSLog
中看到我正在将数据加载到
schoolNames
数组中。但我不知道如何更新数组中的条目,然后将其保存回实体


非常感谢您的帮助。

executeFetchRequest的返回值是一个SchoolName对象数组。要更新这些对象,只需为属性指定一个新值:

for (SchoolName *sn in self.schoolNames) {
    sn.nameOfSchool = ... ; // new value;
}
NSError *error;
if (![context save:&error]) {
    // Save failed, handle error ...
}

executeFetchRequest
的返回值是一个SchoolName对象数组。要更新这些对象,只需为属性指定一个新值:

for (SchoolName *sn in self.schoolNames) {
    sn.nameOfSchool = ... ; // new value;
}
NSError *error;
if (![context save:&error]) {
    // Save failed, handle error ...
}

马丁的建议确实有效。我投了赞成票

另一种方法是通过KVC访问您感兴趣的属性(如果您没有对实体
SchoolName
进行子类化)

还请记住保存,相反,更改将仅在内存中进行(不在存储中)


另外,在代码中,我假设
nameOfSchool
的类型为
NSString
。其他值也是可能的。

马丁的建议确实有效。我投了赞成票

另一种方法是通过KVC访问您感兴趣的属性(如果您没有对实体
SchoolName
进行子类化)

还请记住保存,相反,更改将仅在内存中进行(不在存储中)


另外,在代码中,我假设
nameOfSchool
的类型为
NSString
。其他价值观也是可能的。

太棒了-非常感谢你-非常感谢你-非常感谢我也尝试过这个,它也有效-谢谢我也尝试过这个,它也有效-谢谢