2012-03-27 51 views
1

在iPhone上測試我的應用程序時,我似乎遇到了ALAssetLibrary的緩存問題。用於生產這個問題iOS - ALAssetsLibrary使用的緩存數據未更新

  1. 步驟,使用iPhone的攝像頭

  2. 訪問使用ALAssetsLibrary相機膠捲(通過ELCImagePicker

的問題是,當ELCImagePicker顯示拍照相冊列表中,步驟1中拍攝的照片的縮略圖顯示在相機膠捲相冊中(這是正確的),但是當我進入相機膠捲相冊時,該相片不在那裏。這樣的錯誤也顯示在控制檯日誌:

Cached count is off for 0x2391d0 <x-coredata://D226A7C3-95D5-40B3-BCFB-726E534AB57A/Album/p1> (1357 != 1358) moc=<PLManagedObjectContext: 0x63794c0> 

1357和1358出現之前是匹配的照片數和我拍攝照片後,並關閉影像選擇器打開它再沒有幫助。但是如果我切換到照片應用程序,照片會顯示在那裏。當我回到我的應用程序時,照片現在也會顯示。

我曾經嘗試都

UIImageWriteToSavedPhotosAlbum (UIImage *image, id completionTarget, SEL completionSelector, void *contextInfo); 

和ALAssetsLibrary的

(void)writeImageToSavedPhotosAlbum:(CGImageRef)imageRef orientation:(ALAssetOrientation)orientation completionBlock:(ALAssetsLibraryWriteImageCompletionBlock)completionBlock 

但既不工程。任何幫助是極大的讚賞。謝謝!

回答

0

您可以收聽ALAssetsLibraryChangedNotification通知。

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(reloadAlbumGroups) name:ALAssetsLibraryChangedNotification object:nil]; 

reloadAlubmGroups從資產庫加載您的相冊組以獲取更新的對象。


蘋果文檔:

ALAssetsLibraryChangedNotification

當資產庫的內容已經從使用該數據的應用程序下改變發送。 當您收到此通知時,您應該丟棄任何緩存的信息並再次查詢資產庫。在完成處理通知後,您應該考慮無效的任何ALAssetALAssetsGroupALAssetRepresentation對象。

在iOS v4.0中,通知的對象爲零。在iOS v4.1及更高版本中,通知對象是發佈通知的庫對象。

+0

不完全是最好的用戶體驗,但我想這將不得不做,因爲沒有太多的選項可用。 – Steven 2012-06-12 09:02:28