有两个文件。我们称它们为fileOne
和fileTwo
NSDictionary:比较NSDictionaries
每个都有几个具有相同名称的NSMutableDictionary属性。下面列出几条:
@property (retain, nonatomic) NSMutableDictionary * lunchStartTimeObject;
@property (retain, nonatomic) NSMutableDictionary * lunchLocationNameObject;
@property (retain, nonatomic) NSMutableDictionary * lunchLocationAddressObject;
@property (retain, nonatomic) NSMutableDictionary * activity1NameObject;
@property (retain, nonatomic) NSMutableDictionary * activity1StartTimeObject;
@property (retain, nonatomic) NSMutableDictionary * activity1LocationNameObject;
@property (retain, nonatomic) NSMutableDictionary * activity1CommentsFieldObject;
@property (retain, nonatomic) NSMutableDictionary * activity1LocationAddressObject;
@property (retain, nonatomic) NSMutableDictionary * activity2NameObject;
@property (retain, nonatomic) NSMutableDictionary * activity2StartTimeObject;
@property (retain, nonatomic) NSMutableDictionary * activity2LocationNameObject;
@property (retain, nonatomic) NSMutableDictionary * activity2CommentsFieldObject;
@property (retain, nonatomic) NSMutableDictionary * activity2LocationAddressObject;
我想通过调用下面的方法(或类似的东西)与两个文件同名的字典比较:
-(NSMutableDictionary *)cellColorForChanges:(NSMutableDictionary *)newdictionary :(NSMutableDictionary *)oldDictionary;
{
if(![newdictionary isEqualToDictionary:oldDictionary])
{
[newdictionary setValue:@"UIColor yellowColor" forKey:@"cellColor"];
}
return newdictionary;
}
我试图避免手动为每个NSMutableDictionary编写代码。有没有办法避免以下:
if(![fileOne.lunchStartTimeObject isEqualToDictionary:fileTwo.lunchStartTimeObject])
{
fileOne.lunchStartTimeObject setValue:@"UIColor yellowColor" forKey:@"cellColor"];
}
我有麻烦找出最有效的方式来完成上述。是否有可能发送每个字典到一个方法和取回字典(更新与另一个关键,如果它不相等)?或者我想避免的是不可避免的?
那么,你最终要比较的字典。谢天谢地,isEqualToDictionary是逐项比较的,所以你不必编码。当然,您可以通过将字典放入数组并编写代码来遍历数组并进行比较来避免一些额外的编码,而不必为每个数据单独编写一个比较。但是,这不会更“有效”,执行方面。你也可以首先比较散列值,知道散列不匹配意味着不相等。但是,如果大多数不匹配,这只会得到回报 - 你仍然必须进行比较以确保“平等”。 –