2013-03-10 143 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