2013-03-10 144 views
0

我知道这已被回答了很多次,但我似乎无法让我的工作。核心数据中的更新属性

我有一个名为SchoolName的实体,它有一个名为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); 

我可以在我加载我的数据到schoolNames阵列的NSLog看到。但我不知道如何更新数组中的条目,然后将其保存回实体。

任何帮助非常感谢。

回答

1

Martin的建议非常有效。我upvoted;)。

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

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

还记得保存,相反,更改将只在内存(不在商店)。

P.S.在代码中,我认为nameOfSchool的类型是NSString。其他值也是可能的。

+0

非常棒 - 非常感谢你 – RGriffiths 2013-03-11 21:01:49

2

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

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

我也试过这个,它的工作原理 - 谢谢 – RGriffiths 2013-03-11 21:02:12