2017-03-30 7 views
0

iPhoneの写真を表示するには、カスタムUICollectionViewを使用します。ユーザーが1つ以上の写真を削除/変更/追加した後にアプリがアクティブになったときに、UICollectionViewを再読み込みします。iOS - アプリがアクティブになったときにiPhoneの写真を変更するかどうか

PHAssetをアレイに保存すると、[previousAssetsArray isEqual:currentAssetsArray]が機能しません。

編集:私は再び写真の資産を取得すると

What is the NSObject isEqual: and hash default function?

、そのアドレスが変更され、そうpreviousAssetcurrentAssetに等しいも、彼らは写真に属しています。 [previousAsset isEqual: currentAsset]常にNOです。

hashPHAssetも使用して、写真が変更されたかどうかを確認します。しかし、写真アプリで1枚の写真を修正(作物)しただけで、そのハッシュは変更されませんでした。

+0

の数を比較したい場合は

あなたは「previousAssetsArray」と「currentAssetsArrayのisEqual」の両方のカウント値を比較することができます。 –

+0

@HirenPatelは、単にいくつかの写真を変更した場合、私は、カウント値が機能していないことになる比較し、 'UICollectionView'をリロードします。 – tomfriwel

+0

両方のアレイは異なるメモリアドレスを持つことができますので、直接比較することはできません。変更を比較するために配列を反復処理しなければならない場合があります。また、コレクションビューオーバータイムアプリをアクティブにする必要があります。 –

答えて

0

:: BOOL theyAreEqual = [myFirstArray isEqualToArray:mySecondArray]この[previousAssetsArray isEqualToArray:currentAssetsArray]

例を試してみてください。のではなく二つの配列を比較する:あなたは、両方の配列 previousAssetsArray.count == currentAssetsArray .count

+0

「PHAsset」は同じ写真の「PHAsset」であっても比較できないようです。だから 'isEqualToArray'は動作しません。配列のオブジェクトが文字列の場合、このメソッドは動作します。 – tomfriwel

+0

これを一度お試しください。 (以前のAssetsArray [i] == currentAssetsArray [i]) { NSLog(@ "この選択内の同じ要素"); //(前のAssetsArray [i] ==現在のAssetsArray [i]) }} –

+0

私はpreviousAsset'がcurrentAsset' 'と等しくない'ので、も、彼らは一つの写真に属し、再び写真 'PHAsset'を取得しているため。配列のオブジェクトが 'NSString'の場合、このメソッドはOKです。 – tomfriwel

関連する問題