【发布时间】:2017-03-30 08:51:05
【问题描述】:
我使用自定义UICollectionView 来显示 iPhone 的照片。我想在用户删除/修改/添加一张或多张照片后应用激活时重新加载UICollectionView。
我将PHAsset 保存在一个数组中,[previousAssetsArray isEqual:currentAssetsArray] 不起作用。
有什么想法吗?
编辑:
What is the NSObject isEqual: and hash default function?
当我再次获取照片的资产时,它的地址发生了变化,所以previousAsset 将不等于currentAsset,即使它们属于照片。 [previousAsset isEqual: currentAsset] 总是NO。
我还使用PHAsset 的属性hash 来检查照片是否更改。但是我发现当我刚刚在照片应用中修改(裁剪)一张照片时,它的哈希值没有改变。
【问题讨论】:
-
您可以比较“previousAssetsArray”和“isEqual:currentAssetsArray”的计数值,而不是比较两个数组。
-
@HirenPatel 如果只是修改了一些照片,我会重新加载
UICollectionView,比较计数值将不起作用。 -
两个数组可以有不同的内存地址,所以你不能直接比较。您可能必须遍历数组以比较更改,或者您必须重新加载集合视图超时应用程序变为活动状态。
-
不管它们是否相同,你为什么不重新加载自己?
-
@FahimParkar 因为当我重新加载它时,即使没有任何改变,重新加载
UICollectionView会导致一些动画。这不是一个好的体验。
标签: ios objective-c iphone