ios - isEqualToArray或isEqualToDictionary可以比较多深?

标签 ios cocoa-touch nsarray nsdictionary

哦,所以我在这里有很多情况。

情况1
一个NSArray字典,其键的类型为NSString,值的类型也为NSString。在这种情况下,如果我更改了数组的NSdictionary中的一个值,然后尝试将旧数组与新数组进行比较,则可以使用。 isEqualToArray返回false

案例:2
一个NSArray字典,其键类型为NSString,而某些模型对象的值类型具有name,address,DOB之类的属性。因此,如果我在模型对象(如名称)中更改一个值,并使用相同的键插入字典中。并将其与旧阵列进行比较仍然可以。 isEqualToArray返回false

现在可以继续进行下去,如果我的模型对象中有一个NSArray还是某个模型的原始类型,那会怎样? isEqualToArray是否比较对象值中的几乎所有内容(如深度序列化比较),还是必须停在某个地方?

最佳答案

比较数组时,NSArray isEqual:方法首先检查两个数组具有相同数量的元素(否则,它们显然不相同),然后依次遍历所有元素,然后依次使用isEqual:方法。因此,如果您的数组包含其他数组,字典或其他对象,则按照刚才的描述再次比较数组,将按照我将要描述的那样比较字典,并通过发送isEqual来比较其他对象。

比较字典时,NSDictionary isEqual:方法首先检查两个字典具有相同数量的键/值对。然后,它将使用第一个字典的第一个键,并且该键必须存在于第二个字典中,并且对象必须相同。然后第二个键,第三个键,依此类推。

关于ios - isEqualToArray或isEqualToDictionary可以比较多深?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31211039/

相关文章:

iphone - uisearchDisplayController:更改标签 "No Results"

ios - 嵌入导航 Controller 后 View 不会旋转

iphone - 在 iOS 上,为什么绘图不会出现在以下代码中?

nsmutablearray - 如何检查 NSMutableArray 中的所有对象相同的值

iphone 看不到替代内容

ios - 背景图片缩放 iOS

ios - SceneKit 在移动相机时遇到测试错误

ios - swift 3 网页 View

objective-c - 使用filteredArrayUsingPredicate方法通过属性从数组中过滤对象

iphone - 我想使用 NSSortDescriptor 对数组进行排序