1
當談到使用字典和NSDictionaries時,我對Swift感到非常沮喪。Swift NSDictionary兒童類型
我從服務器拉數據。其中一個值是Bool。
我開始使用Swift Dictionary,並且因爲挫折而轉移到NSDictionary。但是,我仍然無法從字典中獲取值。
以下失敗,矛盾的所有錯誤:
let unread:Bool = data!["unread"] as! Bool
let unread:Bool = data?["unread"] as! Bool
let unread:Bool = data?.objectForKey("unread") as! Bool
let unread:NSNumber = data?["unread"] as! NSNumber
錯誤:無法投類型的值 'NSTaggedPointerString'(0x110c1eae8)到 '的NSNumber'(0x10e0ab2a0)。
好吧,看起來像數據來作爲一個字符串...讓我們試試:
let unreadStr:String = data!["unread"] as! String
let unreadStr:NSString = data!["unread"] as! NSString
錯誤:類型無法施展值 '__NSCFBoolean'(0x1097413b8)到 '的NSString'(0x106bcdb48) 。
所以我很困惑。當我嘗試將其轉換爲Bool時,它說我無法將字符串轉換爲數字。當我嘗試將其轉換爲字符串時,它說我無法將數字轉換爲字符串。
這裏的數據是什麼樣子:
Optional({
senderId = 10154040;
sent = 1460844986973;
text = "Test Message 1";
unread = false;
})
這是我從服務器轉換數據:如果讓字典:NSDictionary的= snapShot.value as? NSDictionary {data = dict.allValues [0]爲? NSDictionary –
難道你的服務器發送給你的是Bool的不一致表示 - 有時是一個字符串,其他時候是一個Bool? –
我剛剛迷上了SwiftyJSON,現在一切正常。 https://github.com/SwiftyJSON/SwiftyJSON –