在自己的初始值中使用的变量 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的主要内容,如果未能解决你的问题,请参考以下文章