在自己的初始值中使用的变量 Swift 3

Posted

技术标签:

【中文标题】在自己的初始值中使用的变量 Swift 3【英文标题】:Variable used within its own initial value Swift 3 【发布时间】:2017-01-29 12:07:33 【问题描述】:

我尝试将我的代码转换为 swift 3,但我花了几个小时处理以下错误:

类型 'Any' 没有下标成员

这是我的原始代码:

let data: AnyObject = user.object(forKey: "profilePicture")![0]

我查看了here 的答案,但我仍然卡住了。 (我把编程作为一种爱好,我不是专业人士:/)

我试过了:

    let object = object.object(forKey: "profilePicture") as? NSDictionary
    let data: AnyObject = object![0] as AnyObject

但现在我得到了这个错误:

变量在自己的初始值内使用

【问题讨论】:

而不是let object = object.object(forKey: "profilePicture") 使用let object = user.object(forKey: "profilePicture") 【参考方案1】:

第二个问题:总是使用不同的变量名作为方法名,基本上使用比object更具描述性的名称。

第一个问题:告诉编译器 profilePicture 的值的类型,显然是一个数组。

if let profilePictures = user["profilePicture"] as? [[String:Any]], !profilePictures.isEmpty 
   let data = profilePictures[0]

但是,数组可能包含Data 对象,如果是这样,请使用

if let profilePictures = user["profilePicture"] as? [Data], !profilePictures.isEmpty  
   let data = profilePictures[0]

或者 - 键的含义 - profilePicture 的值是单个对象,谁知道(但你......)

最后,一如既往,不要在 Swift 中使用 NSArray / NSDictionary

【讨论】:

另外,不要只使用profilePictures[0]。请改用.first,然后打开它。 谢谢,我也更喜欢可选绑定。

以上是关于在自己的初始值中使用的变量 Swift 3的主要内容,如果未能解决你的问题,请参考以下文章

Swift 错误:在其自己的初始值中使用的变量

变量在其自己的初始值中使用,而变量在初始化后的闭包中使用

无法为类型 Unsafepointer Swift 3.0 转换初始化变量

Swift初体验

在自己的初始化程序中使用变量

Swift 元组(Tuple)