我在保存和比较数据方面遇到了问题。首先,我下载数据并将数据(数组、dict)保存到userDefaults中。在重新下载之后,我需要比较一下我的新数组是否有一些我还没有保存在userDefaults中的新数据。因此,这意味着我应该在旧数据中找到不一样的数据,并将它们添加到我的新数组中。
NSMutableDictionary* tmpDict = [NSMutableDictionary new];
NSMutableDictionary* copyDict = [NSMutableDictionary new];
NSMutableArray *dataGroupsArr = [NSMutableArray new];
NSMutableDictionary *dataGroupsDict = [NSMutableDictionary new];
dataGroupsDict[@"name"] = @"FirstGroup"; // I dont need groups at the moment
NSMutableArray *datas = [[NSMutableArray alloc]init];为了..。(解析器)
{
NSMutableDictionary *data = [[NSMutableDictionary alloc]init];
data[@"dataID"] = [@"some data from parser"];
[datas addObject:data];
}];
dataGroupsDict[@"datas"] = datas;
[dataGroupsArr addObject:dataGroupsDict];
tmpDict[@"dataGroups"] = dataGroupsArr;保存数据后,我尝试从userdefualts加载数据。
NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
copyDict = [userDefaults objectForKey:@"dataDownloadArr"];
//data never added
if(copyDict == nil){
[userDefaults setObject:tmpDict forKey:@"dataDownloadArr"];
[userDefaults synchronize];
} else {
for (int i = 0; i< [copyDict[@"dataGroups"][0][@"datas"]count]; i++){
NSLog(@"%@", copyDict[@"dataGroups"][0][@"datas"][i][@"dataID"]);
}
}现在我不知道如何比较数据,如果我的新数组中有新数据,如何将其添加到旧数组中。
发布于 2018-03-26 12:28:13
您试过使用NSData实例方法isEqualToData吗?
如果两个数据对象持有相同数量的字节,而位于对象中相同位置的字节相同,则两个数据对象是相等的。
https://developer.apple.com/documentation/foundation/nsdata/1409330-isequaltodata
发布于 2018-03-26 12:22:18
我也面临着同样的问题,我所做的就是要求后端开发人员以modified_date的形式发送一个值,并创建一个包含dataArray和modified_date的字典。因此,在重新下载之后,您只需检查modified_date并替换dataArray,而不是比较每个数组元素。
https://stackoverflow.com/questions/49490748
复制相似问题