为firebase数据库创建用户对象时,类型“任何”没有下标成员[重复]
Posted
技术标签:
【中文标题】为firebase数据库创建用户对象时,类型“任何”没有下标成员[重复]【英文标题】:when creating user object for firebase database Type 'Any' has no subscript members [duplicate] 【发布时间】:2017-12-15 09:12:33 【问题描述】:我想从 firebase 中检索数据。我为用户创建了一个结构。但我在 init 方法中遇到错误
类型 'Any' 没有下标成员
struct userObj
var address:String!
var name: String!
var userId: String!
var ref: DatabaseReference?
var key: String!
init(snapshot: DataSnapshot)
key = snapshot.key
name = snapshot.value!["name"] as! String // this line give error
address = snapshot.value!["address"] as! String // this line give error
userId = snapshot.value!["userId"] as! String // this line give error
ref = snapshot.ref
【问题讨论】:
当然 snapshot.value!["name"] 不是有效类型。尝试给出正确的类型。 名称是字符串格式。那么这里有什么问题?? 【参考方案1】:DataSnapshot.value
属性声明为var value: Any? get
它没有明确声明为字典类型,但它可能包含字典以及其他可能的类型
NSDictionary NSArray NSNumber(也包括布尔值) NSString在您可以访问字典之前(如果您知道有一个),您必须对其进行类型转换以获得您可以使用的实际字典:
snapshot.value as? [String : AnyObject]
请注意,如果没有适当类型的适当数据,使用!
显式解包选项将会崩溃。
【讨论】:
以上是关于为firebase数据库创建用户对象时,类型“任何”没有下标成员[重复]的主要内容,如果未能解决你的问题,请参考以下文章