我正在尝试直接读取资产 URL 的内容,而无需先写入沙箱。如果我写入沙箱,我可以使用
NSFileHandle *readFile = [NSFileHandle fileHandleForReadingFromURL:file error:nil];
但我无法使用相同的方法读取资产 URL。尽管这是正确的行为,因为我认为 NSFileHandle 适用于用户沙箱中存在的项目。我想知道是否有办法从资产 URL 中读取。
我正在尝试直接读取资产 URL 的内容,而无需先写入沙箱。如果我写入沙箱,我可以使用
NSFileHandle *readFile = [NSFileHandle fileHandleForReadingFromURL:file error:nil];
但我无法使用相同的方法读取资产 URL。尽管这是正确的行为,因为我认为 NSFileHandle 适用于用户沙箱中存在的项目。我想知道是否有办法从资产 URL 中读取。
ALAsset URL 不是文件 URL,因此读取它们的正确方法是
ALAssetsLibrary *lib = [ALAssetsLibrary new];
[lib assetForURL:myAssetURL resultBlock:^(ALAsset *asset) {
/* Example use. Check out the docs on ALAsset for more:
UIImage *exampleImage = [UIImage imageWithCGImage:asset.defaultRepresentation.fullResolutionImage];
*/
} failureBlock:^(NSError *error) {
NSLog(@"Failed to get asset at %@: %@",myAssetURL, error);
}];
重要提示:确保在使用 ALAsset 时保持 ALAssetsLibrary 处于活动状态