2

現在、かなり標準的なコードを使用して、グループ内のアセットを列挙しています。今を除いて、新しいエラーがあります

*** Terminating app due to uncaught exception 'NSRangeException', reason: '*** -[NSOrderedSet enumerateObjectsAtIndexes:options:usingBlock:]: index 46 beyond bounds [0 .. 45]'

これが私が使用しているコードです。

 [group enumerateAssetsWithOptions:NSEnumerationReverse usingBlock:^(ALAsset *result, NSUInteger index, BOOL *stop) {
            NSLog(@"Asset %@", result);
            if (result != nil)
            {
                Asset *asset = [provider newAsset];
                asset.date = [result valueForProperty:ALAssetPropertyDate];
                id duration = [result valueForProperty:ALAssetPropertyDuration];
                asset.duration =  [NSDecimalNumber decimalNumberWithString:[NSString stringWithFormat:@"%@", duration]];
                CLLocation *location = [result valueForProperty:ALAssetPropertyLocation];
                asset.location = [location description];
                asset.orientation = [result valueForProperty:ALAssetPropertyOrientation];
                asset.type = [result valueForProperty:ALAssetPropertyType];
                NSDictionary *urls = [result valueForProperty:ALAssetPropertyURLs];
                for (NSString * key in urls) {
                    NSLog(@"Url = %@",[urls objectForKey:key]);
                    asset.url = [NSString stringWithFormat:@"%@", [urls objectForKey:key]];
                }

                [assetGroup addAssetsObject:asset];

                [asset release]; // Corrected based on comments

            }
        }];

プロバイダー オブジェクトは、カスタム データベース プロバイダーです。しかし、このコードを削除しても意味がありません。一番上の NSLog が起動されることはありません。これは、列挙コードに制御できない問題があることを示しています。他の誰かがこれを経験しましたか?

4

3 に答える 3

0

このバグは、フィルタを写真、ビデオの順に設定し、デフォルトの「アセット」のままにしておくのではなく、それぞれを順番に列挙することで回避できます。

ここに詳細を投稿しました: ALAssetsLibrary が間違った数の写真を返すようです

于 2012-08-20T16:54:23.777 に答える
0

同じ問題が発生しています。これは Apple 側のバグです。

それらは列挙ブロックを別のスレッドで実行し、範囲外でクラッシュします。残念だ!これをキャッチする方法すら見つかりません。アプリがクラッシュし、ライブラリが修正されるまで何もできません。

カメラ ロールを変更するか、場合によっては iPad 用の iPhoto を起動すると問題が解決しますが、再び発生します。幸いなことに、それほど頻繁には発生しませんが、Apple はこれに対応する必要があります。

于 2012-05-17T21:31:46.280 に答える
-1

どうやら私の写真ライブラリが台無しになっているようです。写真を消去してアプリケーションを再度実行すると、この問題は発生しなくなりました。

実際の問題と、AssetsLibrary が Bounds を超えて列挙しようとした理由を知りたいと思います。

于 2011-12-05T22:07:19.317 に答える