更新核心数据中的属性[重复]
Posted
技术标签:
【中文标题】更新核心数据中的属性[重复]【英文标题】:Update attribute in Core Data [duplicate] 【发布时间】:2013-03-10 12:55:05 【问题描述】:我知道这已经回答了很多次,但我似乎无法让我的工作。
我有一个名为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
数组中。但我不知道如何更新数组中的条目,然后将其保存回实体。
非常感谢任何帮助。
【问题讨论】:
【参考方案1】:executeFetchRequest
的返回值是一个 SchoolName 对象的数组。要更新这些对象,您只需为属性分配一个新值:
for (SchoolName *sn in self.schoolNames)
sn.nameOfSchool = ... ; // new value;
NSError *error;
if (![context save:&error])
// Save failed, handle error ...
【讨论】:
我也试过了,它有效 - 谢谢【参考方案2】:Martin 的建议确实有效。我投了赞成票;)。
另一种方式是通过KVC访问你感兴趣的属性(如果你没有子类化实体SchoolName
)。
for (NSManagedObject *schoolObject in [self schoolNames])
[schoolObject setValue:@"yourNewValue" forKey:@"nameOfSchool"];
还要记得保存,相反更改只会在内存中(不在存储中)。
附:在代码中,我假设nameOfSchool
的类型为NSString
。其他值也是可能的。
【讨论】:
太棒了 - 非常感谢以上是关于更新核心数据中的属性[重复]的主要内容,如果未能解决你的问题,请参考以下文章