項目需求:保存圖片到自定義相冊屹耐。
問題:iOS7之前AssetsLibrary 來操作相冊的厅须。假如通過代碼在系統(tǒng)相冊中創(chuàng)建一個名為@"你丫產品狗"的相冊用來保存應用中用戶手動保存的圖片,當用戶手動刪除這個@"你丫產品狗"的相冊并再次保存圖片危尿,打開系統(tǒng)相冊呐萌,oh,god谊娇! 并沒有再次創(chuàng)建@"你丫產品狗"的相冊肺孤。這個時候產品就開始汪汪汪啦。不管怎么跟產品和測死扯皮济欢,這問題一定要解決赠堵,而且作為一名開發(fā)者,自己也不能忍受這樣的bug法褥。 只能通過其他技術解決這個問題茫叭。iOS8后蘋果提供了Photos,惡心的bug,fuck off!
查看蘋果官方文檔
找到一個例子 不用多想速度查看
?Listing 1Creating an asset and adding it to an album
哈哈 好漂亮的代碼 半等。無奈功力尚淺揍愁,沒有看懂。杀饵。莽囤。? PHPhotoLibrary PHAssetChangeRequest PHAssetCollectionChangeRequest PHObjectPlaceholder albumChangeReques 上面所涉及的類都點進去,看看文檔中怎么介紹說明的凹髓。翻看文檔的時候發(fā)現(xiàn)了PHFetchResult 這個類 ?其中有如下說明
還不太明白烁登,是不是,OK, 寫個demo試試蔚舀。搜索下相關資料 然后在蘋果文檔中有這個幾個方法-?
+ (PHFetchResult *)fetchTopLevelUserCollectionsWithOptions:(nullablePHFetchOptions*)options;(void)enumerateObjectsUsingBlock:(void(^)(ObjectType obj,NSUIntegeridx,BOOL*stop))block; ?
- (void)enumerateObjectsWithOptions:(NSEnumerationOptions)opts usingBlock:(void(^)(ObjectType obj,NSUIntegeridx,BOOL*stop))block;
- (void)enumerateObjectsAtIndexes:(NSIndexSet*)s options:(NSEnumerationOptions)opts usingBlock:(void(^)(ObjectType obj,NSUIntegeridx,BOOL*stop))block;
看著這里忍不住 打印輸出 obj 是什么東西饵沧。
其中titlte 是我們手動創(chuàng)建的相冊。哈哈 有點眉目了赌躺。在輸出窗口 (lldb)po exisitingCollection.tilte
error: property 'tilte' not found on object of type 'PHAssetCollection *'
error: 1 errors parsing expression
(lldb)
并不可以輸出狼牺,看看文檔 localizedTitle ?也就是我們手動創(chuàng)建的相冊,可以根據這個特性來檢測 相冊中已經存在@"你丫產品狗"的相冊礼患,這樣及可以解決反復安裝應用后創(chuàng)建多個自定義相冊的問題是钥。 再次用聯(lián)想輸出發(fā)現(xiàn)? ?33C5CE29-6366-4D45-BB0D-406D22360069/L0/040 是localIdentifier ?識別的唯一標識掠归。
demo