Ana*_*sia 8 macos cocoa objective-c foundation ios
我有两个NSDictionaries含有NSStrings.为了比较这两个词典我使用isEqualToDictionary:方法.关于isEqualToDictionary:说的文件
"如果两个词典各自拥有相同数量的条目,则两个词典具有相同的内容;对于给定的键,每个词典中的相应值对象满足isEqual:test."
所以,我的字符串通过isEqual:方法进行比较.
问题是:
如何isEqual:为此工作NSString?
是否使用isEqual:从NSObject?我读过,isEqual从NSObject仅使用比较地址==.为了证明或反驳这个想法,我写了一个样本:
NSString *str1 = @"sampleString";
NSString *str2 = [NSString stringWithFormat:@"%@", @"sampleString"];
BOOL result = [str1 isEqual:str2];
Run Code Online (Sandbox Code Playgroud)
的result是YES,的地址str1和str2是不同的东西.
所以,要么它不使用isEqual:来自NSObject(还有什么比?),或者NSObject的isEqual:做一些更复杂的然后就检查地址的平等.
有谁知道它是如何工作的?
isEqualToDictionary将每个对象与isEqual进行比较.
在我的情况下,它不适用于我的字典中的NSString对象.所以我做了一个非常简单的解决方法.我比较两个词典的描述.这适用于包含NSString和NSNumber的字典,以及包含描述方法的所有对象.
[[myDict1 description] isEqualToString:[myDict2 description]]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5292 次 |
| 最近记录: |