1

在 iPhone 上测试我的应用程序时,我似乎遇到了 ALAssetLibrary 的缓存问题。

用于产生此问题的步骤

  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

但两者都不起作用。任何帮助是极大的赞赏。谢谢!

4

1 回答 1

0

您可以收听ALAssetsLibraryChangedNotification通知。

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

reloadAlubmGroups资产库加载您的专辑组以获取更新的对象。


苹果文档:

ALAAssetsLibraryChangedNotification

当资产库的内容从使用数据的应用程序下发生更改时发送。当您收到此通知时,您应该丢弃所有缓存信息并再次查询资产库。在完成通知处理后,您应该认为您引用的任何ALAssetALAssetsGroup或对象都是无效的。ALAssetRepresentation

在 iOS v4.0 中,通知的对象是 nil。在 iOS v4.1 及更高版本中,通知对象是发布通知的库对象。

于 2012-05-26T05:21:06.053 回答