我正在尝试在我的代码中创建一个循环:
for row in rows! {
print("Row",row)
let pin = Pin.init(latitude: row[0] as! Float, longitude: row[1] as! Float, pinType: row[2] as! String, beaconID: row[3] as! Int, altitude: row[4] as! Float)
pinList.append(pin)
}
这里,row是Any
,我正在根据行的值创建pin对象。
这是我的Pin类:
class Pin {
var latitude:Float
var longitude:Float
var pinType:String
var beaconID:Int
var altitude:Float
init(latitude:Float, longitude:Float, pinType:String, beaconID:Int, altitude:Float){
self.latitude = latitude
self.longitude = longitude
self.pinType = pinType
self.beaconID = beaconID
self.altitude = altitude
}
}
但我收到了这个错误:
无法将“
NSTaggedPointerString
”(0x10146ecd8)类型的值转换为“NSNumber
”(0x102675600)。
当我尝试创建Pin对象时。
任何人都可以帮我解决这个问题吗?感谢。
答案 0 :(得分:7)
id = Int((content[0]["id"] as! NSString).floatValue)
这对我来说很好。内容是json数组
答案 1 :(得分:0)
出乎意料的是,我通过阅读许多文件找到了答案。 以下是此问题的解决方案。
for row in rows! {
print("Row",row)
let lat = (row[0] as! NSString).floatValue
let lng = (row[1] as! NSString).floatValue
let pType = (row[2] as! NSString) as String
let bID = (row[3] as! NSString).integerValue
let alti = (row[4] as! NSString).floatValue
let pin = Pin.init(latitude: lat, longitude: lng, pinType: pType, beaconID: bID, altitude: alti)
pinList.append(pin)
}
我首先尝试将所有值从行转换为NSString,然后将结果转换为我真正转换为的类型。 :)