Ios8 从文件URL检索ALAsset或PHAsset
在Photos.app中选择要传递给操作扩展的图像似乎会产生磁盘上图像的路径(例如:Ios8 从文件URL检索ALAsset或PHAsset,ios8,ios8-extension,photokit,ios-extensions,Ios8,Ios8 Extension,Photokit,Ios Extensions,在Photos.app中选择要传递给操作扩展的图像似乎会产生磁盘上图像的路径(例如:file:///var/mobile/Media/DCIM/109APPLE/IMG_9417.JPG)。有没有办法得到相应的ALAsset或PHAsset URL看起来与调用PHImageManager.requestImageDataForAsset得到的PHImageFileURLKey条目对应。我不想遍历所有的阶段集来找到它。我做了我不想做的事情,并将这种愚蠢的搜索方法组合在一起。它可以工作,虽然它很可怕
file:///var/mobile/Media/DCIM/109APPLE/IMG_9417.JPG
)。有没有办法得到相应的ALAsset或PHAsset
URL看起来与调用
PHImageManager.requestImageDataForAsset
得到的PHImageFileURLKey
条目对应。我不想遍历所有的阶段集来找到它。我做了我不想做的事情,并将这种愚蠢的搜索方法组合在一起。它可以工作,虽然它很可怕,速度很慢,而且当照片库很大时会给我带来内存问题
作为科科和斯威夫特的知音,我很欣赏精致的技巧。谢谢
func PHAssetForFileURL(url:NSURL)->PHAsset?{
var imageRequestOptions=PHImageRequestOptions()
imageRequestOptions.version=.Current
imageRequestOptions.deliveryMode=.FastFormat
imageRequestOptions.resizeMode=.Fast
imageRequestOptions.synchronous=true
让fetchResult=PHAsset.fetchAssetsWithOptions(nil)
对于var index=0;index
这是对您的自动回答(“优化提示”)的评论。因此,注释不会针对代码示例进行剪切,所以我们开始吧
for asset in PHAsset.fetchAssetsWithOptions(nil)
info[“PHImageFileURLKey”]
中的键未记录。被告知。我不认为这会让你被拒绝,但这种行为随时可能改变这是一个NSURL。你不知道怎么从那里到一个摄影棚吗?我不知道。还有
fetchAssetsWithALAssetURLs
,但这只需要assets库://
url。嗯,比这更糟糕。由于沙箱的原因,您甚至不能以这种方式进入库。AlassetLibraryassetForURL
呢?还需要资产库方案(这并不是阻止我的原因:我尝试了assetForURL
和FetchAssetWithAlassetUrls
来踢踢;没有骰子)。谢谢您的提示。我当然更喜欢。。在语法上,但是PHFetchResult没有实现生成器协议,并且不能以这种方式进行迭代(除非最近发生了更改)。我无法让它工作。并指示您需要SequenceType(不是生成器,结果是)使符合NSFastEnumeration的类型也可使用。已编辑的注释,顺序错误:@Soybean我现在只能与Objective-C对话,但在那里,它将是NSFastEnumeration
,是的:@interface PHFetchResult:NSObject
:)