我遇到了一个奇怪的问题。 我正在通过Alamofire解析一个JSON响应,并且想要获取一个只是不断抛出错误的变量,无论我是否将它转换为String或Number,每次我都会改变错误消息:/ 如果我将它转换为这样的字符串:
let kolicina = jsonCategory["kolicina"] as! String
if Int(kolicina) > 0 {
我收到错误:
“无法将'__ NSCFNumber'类型的值(0x10f051368)转换为'NSString'(0x10e627b48)。”
当我尝试将其转换为NSNumber时:
let kolicina = jsonCategory["kolicina"] as! NSNumber
if kolicina.integerValue > 0 {
我明白了:
“无法将'NSTaggedPointerString'类型的值(0x10effcae8)转换为'NSNumber'(0x10e5d32a0)。”
这是我在打印词典时获得的特定变量:
kolicina = 0;
有人能指出我正确的方向吗?
答案 0 :(得分:2)
试试这个..不要强行打开
rails server -b 0.0.0.0 -p 3000 -e production
答案 1 :(得分:2)
似乎你有一个字符串和整数的组合。我建议你修复JSON并将数据保存为字符串或数字,而不是两者。
如果您要解析这种格式,则必须尝试将其解析为NSNumber
或NSString
,例如:
let kolicina = jsonCategory["kolicina"]
if let kolicinaString = kolicina as? String {
...
} else if let kolicinaInt = kolicina as? Int {
...
}
使用> 0
检查您可以执行以下操作:
if let kolicinaString = kolicina as? String,
kolicinaInt = Int(kolicinaString) where kolicinaInt > 0 {
print("String: \(kolicinaInt)")
} else if let kolicinaInt = kolicina as? Int where kolicinaInt > 0 {
print("Int: \(kolicinaInt)")
}
或使用三元运算符:
let kolicinaInt = (kolicina is String) ? Int(kolicina as! String) : kolicina as? Int
if kolicinaInt > 0 {
print("Kolicina: \(kolicinaInt)")
}