2017-12-01 4 views
0

のフェッチ、私は、デバイスから非空のスマートアルバムのコレクションを取得しようとしています:Swift4/ios11を使用して、空でないスマートアルバム

let smartAlbumOptions = PHFetchOptions() 
    smartAlbumOptions.predicate = NSPredicate(format: "estimatedAssetCount > 0") 
    smartAlbums = PHAssetCollection.fetchAssetCollections(with: .smartAlbum, subtype: .albumRegular, options: smartAlbumOptions) 

これは私が多くの例で使用さ見てきましたパラダイムでありますただし、.smartAlbumを指定することは決してありません。

<PHFetchResult: 0x1c40fce00> count=0 

述語が「estimatedAssetCount> = 0」の場合は、フェッチのに対しリターンすべてのスマートアルバムを空にし、そうでない場合:問題はestimatedAssetCount> 0述語は常にゼロ結果を返すということです。何かが欠けているのは、スマートアルバムとの関係ですか?

答えて

0

Appleのドキュメントによれば、このestimatedAssetCountは正確ではない場合があり、利用できない場合はNSNotFoundが返されます。私はこれがあなたに起こっていると思う。その場合は、Appleのドキュメントの提案を続け、すべてのスマートアルバムを取得し、(現在の正確な)countプロパティに基づいてそれらをフィルタリングした後に取得することをお勧めします。

+0

確かに、estimatedAssetCountは不正確ですが、常にゼロを返すことは、あまりにもひどいものであると思われます。返された場合、NSNotFoundは非ゼロ値として評価されます。多くの人がこのテクニックを使っていますが、スマートなアルバムでは壊れているようです。もちろんコレクションも不変なので、ポストフェッチフィルタはどちらでも動作するとは思えませんが、私はそれを試してみて、素早い返信に感謝します! – BlueskyMed

+0

あなたはNSNotFoundがゼロでないと評価されることは間違いありませんが、> 0とは評価されません。常にゼロを返すことは奇妙に見えると思いますが、スマートなアルバムが方法。 – creeperspeak

+0

プロセスにヘッドバンギングが含まれていないとアップルにはなりません – BlueskyMed

関連する問題