将任意对象转换为整数(Int)

3
我正在尝试将一个anyObject转换成一个Int。以下是我的代码:
println(currentObject[0])
println(_stdlib_getDemangledTypeName(currentObject[0]))

2
Swift.隐式解包可选类型<Swift.AnyObject>

我试图将currentObject[0]转换为Int。这是我尝试过的:

let num: Int = currentObjec[0] as! Int

当我运行这个应用程序时,我遇到了以下错误:

无法将类型为 '__NSCFString' (0x103c93c50) 的值转换为 'NSNumber' (0x103535b88)

当我尝试这样做:currentObject[0].toInt() 时,
我收到错误信息:

'AnyObject' 没有一个名为 'toInt()' 的成员

唯一能使它正常工作的方法是这样做:
let numStr = currentObject[0] as! String
let num: Int = numStr.toInt()!

有没有更简单的方法?(不需要先将其转换为字符串。)


你是如何创建/声明 currentObject 的? - Midhun MP
我从一个SQLite数据库中获取了它,作为整数主键。 - Jessica
你能告诉我你是如何声明这个数据结构的吗?我的意思是像 var currentobject : [AnyObject] 这样的东西。 - Midhun MP
“唯一的方法”就是正确的方法。因为currentObject[0]的类型String,所以没有更简单的方法。 - vadian
2
看起来 currentObject[0] 是一个 NSString,所以 let numStr = currentObject[0].integerValue 应该可以工作。 - Martin R
1个回答

7

从错误信息中可以得出结论,currentObject[0] 实际上是一个 NSString 类型。 在这种情况下,您可以使用以下方法进行转换:

无法将类型 '__NSCFString' (0x103c93c50) 转换为 'NSNumber' (0x103535b88)

let numStr = currentObject[0].integerValue

但请注意,如果数组元素不是NSString,则会导致崩溃。


1
嗨,马丁,如果没有错误消息,如何将[Anyobject]?转换为Int? - aircraft

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接