2012-03-27 68 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