6

<><> ---- Aalok がこの質問に答えました。私は彼がそれを書いてくれるのを待っているので、それを正しい答えとして選ぶことができます。それまでは、彼が以下に説明する変更を行うとともに、 -- self.library = [[ALAssetsLibrary alloc] init]; を呼び出す必要がありました。-- 画像を保存しようとするたびに。予防措置として、保存後、再開されるまでAVSessionの実行も停止しました([session stopRunning];および[session startRunning]を使用; ----- <><>

<><> ----- 編集 2: AV セッションを停止して再起動する必要はありません。これは完全にテストされており、完全に機能しています。----- <><>

<><> ----- 編集 3: これを私のデバイスで徹底的にテストした後、完全に動作しましたが、レビュー プロセスを経てストアに配置されると、コードは動作しません。同じ OS を実行している 2 つの同一のデバイス (2x iPhone 4)、1 つは私の開発ビルドを使用し、もう 1 つはアプリ ストアから、AP ストア バージョンにはまだバグがあります。とりあえず諦めて ----- <><>

このリンクのカテゴリを使用して、カスタム フォルダーに保存しようとしています。

http://www.touch-code-magazine.com/ios5-saving-photos-in-custom-photo-album-category-for-download/

現在、一部の時間は機能しますが、すべてではありません。コメントでは、グループ プロパティが nil かどうかを次のコードで検出することが提案されています。

    if ([group valueForProperty:ALAssetsGroupPropertyURL] == nil)
{
NSLog(@”group properties are nil!”);
} else {
[group addAsset:asset];
}

私が持っているもので、プロパティが nil かどうかを検出します。だからすべて良い。私が苦労しているのは、その時点でプロパティを設定して画像を保存することです。この時点で、albumName を手動で設定して画像を保存できると思いますが、試してみましたが、それでもエラーが発生します。

何か案は?ありがとうございました。

4

1 に答える 1

4

この同じ .h および .m ファイルで同じ問題に直面していますが、2 ~ 3 日間作業した後、これに対する 1 つの解決策を見つけました。解決策は非常に単純で、変更する必要があるのは .m ファイルです。

-(void)saveImage:(UIImage*)image toAlbum:(NSString*)albumName withCompletionBlock:(SaveImageCompletion)completionBlock

そして

-(void)addAssetURL:(NSURL*)assetURL toAlbum:(NSString*)albumName withCompletionBlock:(SaveImageCompletion)completionBlock

メソッドは、内部メソッドを呼び出す前にこれを追加するだけです

//THE CHANGE dispatch_async(dispatch_get_main_queue(),^{ //
[self writeImageToSavedPhotosAlbum:image.CGImage orientation:(ALAssetOrientation)image.imageOrientation completionBlock:^(NSURL* assetURL, NSError* error) 
    {
        //error handling
        if (error!=nil) 
        {
            completionBlock(error);
            return;
        }
        //add the asset to the custom photo album
        [self addAssetURL: assetURL toAlbum:albumName withCompletionBlock:completionBlock];
    }];
//THE CHANGE }); //

AND もう一方も同じ

ハッピーコーディング:)

編集

completionBlock(nil);2番目の方法では、すべての行の下に行を追加します

[[NSNotificationCenter defaultCenter] postNotificationName:kSaveSuccess object:nil];

そして、この通知を使用して、画像もアルバムに保存されていることを確認します。その時まで、私UIActivityIndicatorはいくつかのテキストメッセージで表示され、画像が正常に保存された後、画像がアルバム名でアルバムに保存されていることを示す1つのポップアップメッセージが表示されます. 今回はUIが応答しません。つまり、ユーザーはデバイスのホームボタンを押す以外に何もできません:) ;)

ハッピーコーディング:)

于 2012-07-03T09:52:21.957 に答える