Hoşgeldin. Soru sormak veya cevaplamak için hemen üye ol.

Swift - Could not cast value of type 'NSTaggedPointerString to 'NSNumber'.

0 oy
124 kez görüntülendi
23, Kasım, 2017 ios development kategorisinde ibolat tarafından soruldu

Merhaba arkadaşlar,

Uygulamada SQL'e yaptığım bir 'select' komutunda gelen değerler 'Smallint (16-bit)' tipinde

ben bu değerleri bir değişkene aşağıdaki gibi almak istiyorum ama konu başlığında da belirttiğim hatayı veriyor.

for table in results as! [[[String:AnyObject]]] {
                    for row in table {
                        for (columnName, value) in row {
                            print("\(columnName) = \(value)")
                            if(columnName == "UYGULAMASEKLI"){
                                self.uygsekligelendeger = value as! Int
                            }else if(columnName == "UYGULAMAYERI"){
                                self.uygyerigelendeger = value as! Int
                            }
                        }
                    }
                }

print --> UYGULAMAYERI = 3
Hata --> Could not cast value of type 'NSTaggedPointerString' (0x1b632d900) to 'NSNumber' (0x1b6339c08).

1 cevap

0 oy
23, Kasım, 2017 yasin tarafından cevaplandı
23, Kasım, 2017 ibolat tarafından seçilmiş
 
En İyi Cevap

gelen AnyObject değerini cast etmelisin.
önce string'e,
daha sonra Double'a
daha sonrda'da integer'a,
bu şekilde kullanmak tehlikeli.

let anyObj:AnyObject = "123.5" as AnyObject        
        if let convertToString = anyObj as? String {
            if let stringToDouble = Double(convertToString) {
                let integer = Int(stringToDouble)
                print("int:\(integer)")
            } else {
                print("string is not convertible to Double")
            }
        } else {
            print("anyObj is not convertible to String")
        }
...