2017-10-04 14 views
0

私はこのような私のコードでループを作るしようとしています:が「するNSNumber」(0x102675600)にタイプ「の値NSTaggedPointerString」(0x10146ecd8)にキャストできませんでした

ここ
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と私です行の値に基づいてピンオブジェクトを作成しています。

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

しかし、私はこのエラーを得た:ここ

は私のピンクラスである私はピンオブジェクトを作成しようとしていますながら

Could not cast value of type ' NSTaggedPointerString ' (0x10146ecd8) to ' NSNumber ' (0x102675600).

を。

誰でもこの問題を解決する手助けはできますか?ありがとう。

+1

'print(" Row "、row)の出力を表示してください。 – 3stud1ant3

+0

ここにRow [1.283364,103.815021、yellow、1,20]の値があります。私は予期せずに解決する方法を見つけた:)あなたの時間のおかげで。 –

+3

[NSTaggedPointerString型の値を 'NSNumber'にキャストできませんでした](https://stackoverflow.com/questions/33299202/could-not-cast-value-of-type-nstaggedpointerstring-to-nsnumber) –

答えて

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に変換し、結果を実際に変換するタイプに変換しようとしました。 :)

+0

'NSString'へのブリッジ(そして' String'に戻って)は非常に悪い解決策です。 – vadian

0
id = Int((content[0]["id"] as! NSString).floatValue) 

これは問題なく機能します。内容はjson配列

関連する問題