Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/44.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/110.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 在iOS中使用核心数据更新记录_Iphone_Ios - Fatal编程技术网

Iphone 在iOS中使用核心数据更新记录

Iphone 在iOS中使用核心数据更新记录,iphone,ios,Iphone,Ios,我似乎找不到一个关于如何使用iOS上的核心数据更新现有数据行的示例。就SQL而言,我希望做一些如下工作: 更新设备集attr1='blah',attr2='blah',其中deviceid='1' 我知道我可以做这样的事情: [设备设置值:@“blah”forKey:@“attr1”] 但是,只有在设备ID='1'的情况下,我才能这样做 非常感谢您的帮助。对于核心数据,您永远不会直接执行SQL查询。。。只需更新对象的值,然后保存managedObjectContext,即可更新数据库 在您的示例

我似乎找不到一个关于如何使用iOS上的核心数据更新现有数据行的示例。就SQL而言,我希望做一些如下工作: 更新设备集attr1='blah',attr2='blah',其中deviceid='1'

我知道我可以做这样的事情: [设备设置值:@“blah”forKey:@“attr1”]

但是,只有在设备ID='1'的情况下,我才能这样做


非常感谢您的帮助。

对于核心数据,您永远不会直接执行SQL查询。。。只需更新对象的值,然后保存managedObjectContext,即可更新数据库

在您的示例中,设备是对象的特定实例<代码>[设备设置值:@“blah”forKey:@“attr1”]将只更新1个设备对象,因此不需要任何where子句


如果需要从数据库中检索正确的设备对象,则需要使用。我建议您浏览一下,以了解核心数据是如何工作的。如果您询问的是SQL语句和WHERE子句,那么您对核心数据的看法似乎不正确。

出于安全考虑,请使用
lastObject
方法。如果
executeFetchRequest:error:
返回nil,您的程序将崩溃:

NSManagedObject *device = [fetchedObjects lastObject];

用SQL术语来考虑核心数据是一个致命的错误。核心数据是一个对象图管理系统,它有时使用SQL来持久化对象图。在核心数据中,实体不是表,属性不是列,ManagedObject不是行。请参见+1“实体不是表,属性不是列,ManagedObject不是行”。。。那有一个很酷的禅宗戒指。这对我没有帮助。一些代码示例或链接怎么样?是的,我知道它不是SQL。但在执行获取请求后,我在设置实体的值时遇到了问题。例如,我使用以下代码执行fetchrequest://获取设备记录NSFetchRequest*fetchrequest=[[NSFetchRequest alloc]init];NSEntityDescription*实体=[NSEntityDescription entityForName:@“设备”在托管对象上下文:上下文中];[FetchRequestSetEntity:entity];NSPredicate*谓词=[NSPredicate谓词格式:@“(设备ID=%d)”,设备ID];[FetchRequestSetPredicate:谓词];但当我尝试更新实体上的值时,它会给我一个错误,如:[entity setValue:[NSNumber numberWithInteger:sealedSwitch.on]forKey:@“sealed”];这是最正确的答案,必须作为答案进行检查!