0

我知道这已经被回答了很多次,但我似乎无法让我的工作。

我有一个名为SchoolNames 的实体,它有一个名为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数组中。但我不知道如何更新数组中的条目,然后将其保存回实体。

非常感谢任何帮助。

4

2 回答 2

2

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

for (SchoolName *sn in self.schoolNames) {
    sn.nameOfSchool = ... ; // new value;
}
NSError *error;
if (![context save:&error]) {
    // Save failed, handle error ...
}
于 2013-03-10T13:28:22.867 回答
1

马丁的建议确实有效。我赞成;)。

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

for (NSManagedObject *schoolObject in [self schoolNames]) {
    [schoolObject setValue:@"yourNewValue" forKey:@"nameOfSchool"];
}

还要记住保存,相反更改只会在内存中(而不是在存储中)。

PS 在代码中,我认为那nameOfSchoolNSString. 其他值是可能的。

于 2013-03-10T13:36:21.893 回答