使用iOS中的Core Data更新记录

yup*_*yup 5 iphone ios

我似乎无法找到如何使用iOS上的Core Data更新现有数据行的示例.就SQL而言,我希望按照以下方式做一些事情:UPDATE device SET attr1 ='blah',attr2 ='blah'WHERe deviceid ='1';

我知道我可以这样做:[device setValue:@"blah"forKey:@"attr1"];

但是,我怎么能只在deviceid ='1'的情况下做到这一点?

任何帮助表示赞赏.

Gen*_*ari 13

使用Core Data,您永远不会直接执行SQL查询...只需更新对象的值,然后保存managedObjectContext即可更新数据库.

在您的示例中,device是对象的特定实例... [device setValue:@"blah" forKey:@"attr1"];将仅更新该1个设备对象,因此您不需要任何where子句.

如果需要从数据库中检索正确的设备对象,则需要使用NSFetchRequest.我建议查看核心数据编程指南,以了解核心数据的工作原理.如果您询问SQL语句和WHERE子句,那么您似乎对Core Data的内容有错误的看法.


yup*_*yup 1

lastObject出于安全原因使用该方法。如果executeFetchRequest:error:返回 nil,你的程序将会崩溃:

NSManagedObject *device = [fetchedObjects lastObject];
Run Code Online (Sandbox Code Playgroud)