【发布时间】:2017-01-23 17:21:26
【问题描述】:
我正在使用带有 Firebase 的应用。
今天迁移到 swift 3.0 后,Xcode 要求我更改此代码:
ref.observeEventType(.ChildAdded, withBlock: { snapshot in
let currentData = snapshot.value!.objectForKey("Dogs")
if currentData != nil {
let mylat = (currentData!["latitude"])! as! [String]
let mylat2 = Double((mylat[0]))
let mylon = (currentData!["longitude"])! as! [String]
let mylon2 = Double((mylon[0]))
let userid = (currentData!["User"])! as! [String]
let userid2 = userid[0]
let otherloc = CLLocation(latitude: mylat2!, longitude: mylon2!)
self.distanceBetweenTwoLocations(self.currentLocation, destination: otherloc, userid: userid2)
}
})
到此代码:
ref.observe(.childAdded, with: { snapshot in
let currentData = (snapshot.value! as AnyObject).object("Dogs")
if currentData != nil {
let mylat = (currentData!["latitude"])! as! [String]
let mylat2 = Double((mylat[0]))
let mylon = (currentData!["longitude"])! as! [String]
let mylon2 = Double((mylon[0]))
let userid = (currentData!["User"])! as! [String]
let userid2 = userid[0]
let otherloc = CLLocation(latitude: mylat2!, longitude: mylon2!)
self.distanceBetweenTwoLocations(self.currentLocation, destination: otherloc, userid: userid2)
}
})
但是在第二行它给了我一个错误:
不能调用非函数类型'Any?!'的值
这是 FireBase 中的 json 数据:
{
“user1” : {
"Dogs" : {
"User" : [ "siACmQZ7MDclDSO3hrCOp953kfl2" ],
"latitude" : [ "32.172344" ],
"longitude" : [ "34.858068" ]
}
“user2” : {
"Dogs" : {
"User" : [ "siACmQZ7MDclDSO3hrCOp953kfl2" ],
"latitude" : [ "32.172344" ],
"longitude" : [ "34.858068" ]
}
“user3” : {
"Dogs" : {
"User" : [ "siACmQZ7MDclDSO3hrCOp953kfl2" ],
"latitude" : [ "32.172344" ],
"longitude" : [ "34.858068" ]
}
}
【问题讨论】:
-
你能提供你的最小JSON,因为文本不是sn-p
-
@Dravidian 当然,完成
-
你解决了这个问题吗?
-
@André Yea,刚刚发布了答案
-
感谢 Eliko,刚刚在这里找到了类似的解决方案。
标签: ios swift firebase firebase-realtime-database swift3