0

これは何度も回答されていることは知っていますが、私のものを機能させることができないようです。

sというエンティティが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 );

データを配列NSLogにロードしていることがわかります。schoolNamesしかし、配列内のエントリを更新し、それをエンティティに保存する方法がわかりません。

どんな助けでも大歓迎です。

4

2 に答える 2

2

の戻り値はSchoolNameオブジェクトexecuteFetchRequestの配列です。これらのオブジェクトを更新するには、属性に新しい値を割り当てるだけです:

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

マーティンの提案は本当に有効です。私は賛成しました;)。

もう 1 つの方法は、KVC を介して関心のある属性にアクセスすることです (エンティティをサブクラス化していない場合SchoolName)。

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

また、保存することを忘れないでください。逆に、変更はメモリ上でのみ行われます (ストアではありません)。

PSコードでは、それnameOfSchoolはタイプであると思いますNSString。他の値も可能です。

于 2013-03-10T13:36:21.893 に答える