在iPhone上测试我的应用时,我似乎遇到了ALAssetLibrary的缓存问题。
用于产生此问题的步骤
问题在于,当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 :(得分:0)
您可以收听ALAssetsLibraryChangedNotification
通知。
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(reloadAlbumGroups) name:ALAssetsLibraryChangedNotification object:nil];
在reloadAlubmGroups
中从资源库加载相册组以获取更新的对象。
Apple文档:
<强> ALAssetsLibraryChangedNotification 强>
当资产库的内容已从使用该数据的应用程序下更改时发送。 收到此通知后,您应丢弃所有缓存的信息并再次查询资产库。在处理完通知后,您应该考虑将您引用的任何
ALAsset
,ALAssetsGroup
或ALAssetRepresentation
个对象视为无效。在iOS v4.0中,通知的对象为零。在iOS v4.1及更高版本中,通知对象是发布通知的库对象。