0

私のアプリケーションは、ユーザーのアルバムを追跡するために「ALAssetsGroup」を使用しています

これらのアルバムをアプリケーションに表示すると、ユーザーはアルバムをクリックして画像も表示できます。

ここで、ユーザーがサファリを介して画像をダウンロードしたり、何らかの方法でアルバムを変更したりすると、問題が発生します。

私のアプリケーションはまだ新しいアルバムではなく古いアルバムへの参照を保持しているので、を使用してアルバムを更新しようとしました

- (void)applicationWillEnterForeground:(UIApplication *)application

しかし、アルバムはまだ古い値を持っているようです。アプリケーション内でもう一度更新すると、正しい値が取得されます。

この問題を解決するために使用できるものは他にありますか..?多分通知..?

4

2 に答える 2

2
        //This Registers a Notification for any changes
[[NSNotificationCenter defaultCenter] addObserver:self 
                                             selector:@selector(didChangeLibrary:) 
                                                 name:ALAssetsLibraryChangedNotification 
                                               object:[AGImagePickerController defaultAssetsLibrary]];

- (void)didChangeLibrary:(NSNotification *)notification
{
        //Enter some code here to deal with the album changing
}

編集:これはiOS 5では機能しないようです(これはバグであるため、Apple用にレーダーが開かれています)。

当面使用する回避策は次のとおりです。

電話

[self.assetsLibrary writeImageToSavedPhotosAlbum:nil metadata:nil
 completionBlock:^(NSURL *assetURL, NSError *error) { }];

ALAssetsLibraryのインスタンスを作成した直後ALAssetsLibraryChangedNotificationを観察します(NSManagedObjectContextObjectsDidChangeNotificationではありません)

于 2012-04-11T08:02:26.360 に答える
0

applicationDidBecomeActiveApplicationDelegateのメソッドを使用します

- (void)applicationDidBecomeActive:(UIApplication *)application
{
    /*
     Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface.
     */
}
于 2012-04-11T08:49:08.373 に答える