Objective-C / ALAssetslibrary - 如何检索资产的正确路径

时间:2013-08-28 13:24:56

标签: objective-c alassetslibrary

我已经实现了一个简单的方法,可以找到设备内部图像的路径。其实我正在使用iPhone模拟器。这是我正在使用的代码:

[library enumerateGroupsWithTypes:ALAssetsGroupAll usingBlock:^(ALAssetsGroup *group, BOOL *stop) {
    if (group) {
        [group setAssetsFilter:[ALAssetsFilter allPhotos]];
        [group enumerateAssetsUsingBlock:^(ALAsset *asset, NSUInteger index, BOOL *stop){
            if (asset){
                NSString *description = [asset description];
                NSRange first = [description rangeOfString:@"URLs:"];
                NSRange second = [description rangeOfString:@"?id="];
                NSString *path = [description substringWithRange: NSMakeRange(first.location + first.length, second.location - (first.location + first.length))];
                [idList addObject:path];
            }
        }];
    }        
    } failureBlock:^(NSError *error) {
        NSLog(@"error enumerating AssetLibrary groups %@\n", error);
    }
  ];
}); 

此时,如果我记录了我收到的图像的路径:“assets-library://asset/asset.JPG”,我所知道的不是具有正确位置的整个路径图像。你还好吗?那么,我如何获得资产的整个路径呢?

由于

1 个答案:

答案 0 :(得分:1)

您没有从资产说明中正确检索网址。

考虑使用ALAsset valueForProperty:来简化您的任务。

NSURL *url = [asset valueForProperty:ALAssetPropertyAssetURL];

您可以稍后使用该网址使用ALAssetsLibrary assetForURL从库中检索资产:

[library assetForURL:self.url resultBlock:^(ALAsset *asset) {

    } failureBlock:^(NSError *error) {

    }];