Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/23.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
Ios 核心数据安装_Ios_Objective C_Core Data - Fatal编程技术网

Ios 核心数据安装

Ios 核心数据安装,ios,objective-c,core-data,Ios,Objective C,Core Data,我正在使用核心数据在我的应用程序中保存来自web服务的数据。在第一次运行时,应用程序创建核心数据实例和属性,并保存所有数据。我的问题是,当应用程序第二次或多次运行时,核心数据是否会创建其实例和属性并一次或一次又一次地保存所有数据?如果我的问题不相关,我很抱歉 谢谢如果每次运行应用程序时都调用用于将数据存储到coredata的Webservice+代码,core data将一次又一次地存储对象 你可以用两种方法来解决这个问题 如果来自服务器的数据保持不变,则可以设置标志并检查coredata插入是

我正在使用核心数据在我的应用程序中保存来自web服务的数据。在第一次运行时,应用程序创建核心数据实例和属性,并保存所有数据。我的问题是,当应用程序第二次或多次运行时,核心数据是否会创建其实例和属性并一次或一次又一次地保存所有数据?如果我的问题不相关,我很抱歉


谢谢

如果每次运行应用程序时都调用用于将数据存储到coredata的Webservice+代码,core data将一次又一次地存储对象

你可以用两种方法来解决这个问题

  • 如果来自服务器的数据保持不变,则可以设置标志并检查coredata插入是否只执行一次
  • 若来自服务器的数据可能会不断更改,则可以更新数据,而不是再次插入数据,以避免重复记录

  • 如果你想确保数据是唯一的,你应该确保数据对象应该有一个唯一的键。 例如:

    @interface Person : NSManagedObject
    @property (nonatomic, retain) NSNumber * pid;
    @property (nonatomic, retain) NSString * name;
    @end 
    
    Person.pid的属性应该是唯一的。这意味着你最多只能得到一个人指定的pid

    因此,在插入新对象之前,应使用NSFetchRequest(NSPreditate)查询数据库,如下所示:

    NSNumber *aimPid;// the person's pid
    NSPredicate *predicate = [NSPredicate predicateWithFormat:[NSString stringWithFormat:@"pid == %@", aimPid]];
    
    如果此人存在,则只需更新并保存即可

    如果此人不存在,则插入一个新的联系人并保存


    更多信息:

    可能发生数据重复。你试过输出数据吗?我没有遇到任何关于这个问题的问题,我只是问,每当应用程序运行时,它会从一开始就创建核心数据吗?或者只是附加数据?我的数据一直在变化,所以这意味着每当应用程序运行时,它都会从开始创建核心数据,然后再次插入数据?是的,如果您不更新记录并每次插入它们,coredata会一次又一次地将相同的记录添加到表中