簡単なiOSプログラムを作成して、カメラロールに保存された写真画像の数を取得しました。 SDK4.2。デバイスでプログラムを実行するとAssetsLibraryはカメラロールに保存された画像を取得しません
プログラムは、iPhoneシミュレータで実行したときに期待どおりに機能しました。 しかし、私は実際のiPhoneデバイス(iOS 4.2.1のiPhone 3GS)を走らせても画像を取得できませんでした。
この問題は、以下の記事で説明した問題と同じよう次のようになります。 Assets Library Framework not working correctly on 4.0 and 4.2
だから、私は以下のように「dispatch_async(dispatch_get_main_queue()...」機能を追加した、しかし、私は解決することができませんでした問題あなたはそれを解決するために、任意のアイデアを持っている場合
- (void)viewDidLoad {
[super viewDidLoad];
NSMutableArray assets = [[NSMutableArray array] retain]; // Prepare array to have retrieved images by Assets Library.
void (^assetEnumerator)(struct ALAsset *, NSUInteger, BOOL *) = ^(ALAsset *asset, NSUInteger index, BOOL *stop) {
if(asset != NULL) {
[assets addObject:asset];
dispatch_async(dispatch_get_main_queue(), ^{
// show number of retrieved images saved in the Camera role.
// The [assets count] returns always 0 when I run this program on iPhone device although it worked OK on the simulator.
NSLog(@"%i", [assets count]);
});
}
};
void (^assetGroupEnumerator)(struct ALAssetsGroup *, BOOL *) = ^(ALAssetsGroup *group, BOOL *stop) {
if(group != nil) {
[group enumerateAssetsUsingBlock:assetEnumerator];
}
};
// Create instance of the Assets Library.
ALAssetsLibrary* library = [[ALAssetsLibrary alloc] init];
[library enumerateGroupsWithTypes:ALAssetsGroupSavedPhotos // Retrieve the images saved in the Camera role.
usingBlock:assetGroupEnumerator
failureBlock: ^(NSError *error) {
NSLog(@"Failed.");
}];
}
はあなたが私に教えてもらえ
最後に私が得ましたこの問題の解決策: – Hidehiko