Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios Swift共享扩展,ALAsset为零_Ios_Swift_Alassetslibrary - Fatal编程技术网

Ios Swift共享扩展,ALAsset为零

Ios Swift共享扩展,ALAsset为零,ios,swift,alassetslibrary,Ios,Swift,Alassetslibrary,我想获得一些关于我将与共享扩展共享的图像的额外信息。我可以从url创建UIImage,但是当我想要获得一个集合时,我得到的是零。有人有这个问题吗 itemProvider!.loadItemForTypeIdentifier(String(kUTTypeImage), options: nil, completionHandler: { (decoder: NSSecureCoding!, error: NSError!) -> Void in if ALAssetsLibrary.aut

我想获得一些关于我将与共享扩展共享的图像的额外信息。我可以从url创建UIImage,但是当我想要获得一个集合时,我得到的是零。有人有这个问题吗

itemProvider!.loadItemForTypeIdentifier(String(kUTTypeImage), options: nil, completionHandler: { (decoder: NSSecureCoding!, error: NSError!) -> Void in
if ALAssetsLibrary.authorizationStatus() == ALAuthorizationStatus.Authorized {

                    if let url = decoder as? NSURL {
                        ALAssetsLibrary().assetForURL(url, resultBlock: { (myasset:ALAsset!) -> Void in

                            println(url)
                            println(fm.fileExistsAtPath(url.path!))
                            println(myasset)
                            let location = myasset?.valueForProperty(ALAssetPropertyLocation) as CLLocation?
                            let date = myasset?.valueForProperty(ALAssetPropertyDate) as NSDate?
                            self.extensionContext?.completeRequestReturningItems([AnyObject](), completionHandler: nil)

                        }, failureBlock: { (myerror:NSError!) -> Void in


                        })
                    }
                }
输出是

file:///var/mobile/Media/DCIM/102APPLE/IMG_2977.JPG
true
nil

当前的问题是,您正在传递一个文件url来代替此行的资产url:
AlassetLibrary().assetForURL(url,resultBlock:{(myasset:ALAsset!)->Void in
。 共享扩展将url返回到iphone文件系统上的路径……形式如下:
file:///....
。这些URL与ALAsset在
assetForURL
方法中需要的URL不同

不幸的是,虽然这使代码更加正确,但仍然无法解决问题。我花了一些时间研究了许多不同的方法。通过
AssetLibrary
将新图像写入磁盘,并且给定的文件路径将在完成后返回一个资产url,该url将成功运行-尽管您显然不希望重复照片在您的相机卷中。(注意:无法删除图像集)。您可能会保留文件路径,并在完成后删除新图像,但这是一种非常混乱的方法


考虑到这些限制,我最终改写了我的方法。

我遇到了完全相同的问题(使用objective-c)。它命中了结果块,但里面的资源为零。我感觉新的iOS 8照片框架可能需要用于此框架。希望不是。你是对的,我现在看到资源url的形式是资产-library://asset/asset.JPG?id=00000000-0000-0000-0000-000000000 6BD&ext=JPG根据我的url,我想我找不到这个url:(我已经花了相当长的时间尝试从文件URL到资产URL。据我所知,这是不可能的。我甚至不认为相反的情况是可能的(从资产URL到文件URL)。这似乎是苹果沙箱资产访问…可能是出于安全原因。