无法将'NSTaggedPointerString'(0x10146ecd8)类型的值转换为'NSNumber'(0x102675600)

问题描述 投票:3回答:2

我试图在我的代码中循环,如下所示:

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)
    }

这里,行是一个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对象。

任何人都可以帮我解决这个问题吗?谢谢。

swift class object nstaggedpointerstring
2个回答
9
投票
id = Int((content[0]["id"] as! NSString).floatValue)

这对我来说很好。内容是json数组


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,并将结果转换为我真正转换为的类型。 :)

© www.soinside.com 2019 - 2024. All rights reserved.