gpt4 book ai didi

ios - 将数据插入 Core Data 并检查它是否已经存在

转载 作者:行者123 更新时间:2023-11-29 02:59:07 25 4
gpt4 key购买 nike

我尝试了几个核心数据示例。所以我现在所拥有的,我能够将数据保存到我的 cstore 中,也能够检索它。我的问题是这样的,我正在从服务器获取数据并存储它。下次我从服务器获取数据时,我只想保存新数据。

我的保存数据和获取数据方法如下所示:

-(NSArray *)getUserListFromDB {

NSEntityDescription *entitydesc = [NSEntityDescription entityForName:@"Subscribers" inManagedObjectContext:context];
NSFetchRequest *request = [[NSFetchRequest alloc] init];
[request setEntity:entitydesc];

NSError *error;
NSArray *channelData = [context executeFetchRequest:request error:&error];
return channelData;
}

-(void)saveUserslListToDB:(SubscriberChannelListDataModel *) subscriberChannelList {

NSEntityDescription *entitydesc = [NSEntityDescription entityForName:@"Subscribers" inManagedObjectContext:context];

NSMutableArray *user = subscriberList;
for(int position = 0; position < channelList.count; position ++) {
NSManagedObject *newUser = [[NSManagedObject alloc] initWithEntity:entitydesc insertIntoManagedObjectContext:context];

UserDataModel *userData = [user objectAtIndex:position];

[newUser setValue: userData.userName forKeyPath:@"userName”];
[newUser setValue: userData.userId forKeyPath:@“userId”];
NSError *error;
[context save:&error];
NSLog(@"Data save ..");
}
}

有没有人已经面临同样的问题并且有好的解决方案?

最佳答案

您的目标可以通过不同的方式实现。这取决于您需要付出多少努力以及您的数据有多大。 “大”意味着您是否拥有大量数据。

起点是为您的实体使用 guid 属性。此属性用于查看某个商品是否已存在于商店中。实现它的正确方法是遵循Implementing Find-or-Create Efficiently部分。

关于解决方案,一种简单的方法是从服务器获取所有数据并更新存储中已有的对象(具有所有属性)并插入不存在的其他对象。这可能适用于小型数据集。 无论如何,您应该需要使用 Instruments 测试性能

一个更复杂的方法是与您的 guid 属性一起使用 updateAt 时间戳(NSDate 的类型)。看看How to Sync iPhone Core Data with web server, and then push to other devices? .特别是第二个答案为您的目标提供了一个伪算法。

注意。我想您需要在后台执行操作才能不阻塞 UI。

关于ios - 将数据插入 Core Data 并检查它是否已经存在,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23510188/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com