Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/17.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 NSData init?(url的内容:url)从Swift 2迁移到Swift 3_Ios_Swift_Swift3_Swift2 - Fatal编程技术网

Ios NSData init?(url的内容:url)从Swift 2迁移到Swift 3

Ios NSData init?(url的内容:url)从Swift 2迁移到Swift 3,ios,swift,swift3,swift2,Ios,Swift,Swift3,Swift2,iOS/Swift新增。我正在尝试将一个项目(通过NSData init()方法从URL获取内容)从Swift 2迁移到Swift 3。原始代码如下所示: let loadedImageData = NSData(contentsOfURL: imageURL) dispatch_async(dispatch_get_main_queue()) { if imageURL == user.profileImageURL {

iOS/Swift新增。我正在尝试将一个项目(通过
NSData init()
方法从URL获取内容)从Swift 2迁移到Swift 3。原始代码如下所示:

let loadedImageData = NSData(contentsOfURL: imageURL)
            dispatch_async(dispatch_get_main_queue()) {
                if imageURL == user.profileImageURL {
                    if let imageData = loadedImageData  {
                        self.profileImageView?.image = UIImage(data: imageData)
                    }
                }
            }
Swift 3迁移:

 let loadedImageData = NSData(contentsOf: imageURL as URL)
            DispatchQueue.main.async {
                if imageURL == user.profileImageURL {
                    if let imageData = loadedImageData  {
                        self.profileImageView?.image = UIImage(data: imageData as Data)
                    }
                }
            }
我不知道为什么我们需要将
NSData
返回值转换为
URL
,然后在Swift 3中加载图像时再次转换为
Data
类型。我们正在将原始数据分配给两个版本中的变量
LoadeImage data
。那为什么选演员呢?似乎
UIImage init()
方法需要Swift 3中的数据对象。但是,对于Swift 2,没有相同的铸造。为什么呢


感谢您的帮助。

迁移包括对这些方法的签名进行一些更改,即它们接受的类型

在Swift 2中,
NSData(contentsOfURL:)
UIImage(data:)
take
NSURL
NSData

目前,它们已更改为
NSData(contentsOf:)
UIImage(data:)
,分别接受
URL
struct
)和
data
(而不是
NSData
);因此,除非您从类型
URL
而不是
NSURL
构建URL,否则强制转换是必需的


您可以使用
数据(contentsOf:URL)
来避免强制转换。

ahhh我明白了……URL实际上是作为可选的NSUrl变量构建的。这是有意义的。我们可以在哪里找到swift 2.0 API的文档以及相应的更改。我指的是:。但这并没有显示init方法从2.0到3.0的变化。谢谢