在Swift中,如何将Int32转换为Int?

28

转换Int32为Int在Swift中应该很容易,但我只找到了反向转换的方法。除非问题不同?

我有一个存储在Core Data中的值,我想将其作为Int返回。

这是我正在使用的代码,但它不起作用:

func myNumber () -> Int {
    var myUnit:NSManagedObject
    myUnit=self.getObject(“EntityName”) // This is working.

    return Int(myUnit.valueForKey(“theNUMBER”)?.intValue!)
 }

2
让 i32 = UInt32(911),然后让 i = Int(i32)。希望这可以帮到你。 - Matteo Piombo
2
intValue返回Int32,你可以使用integerValue返回Int。 - Leo Dabus
返回 myUnit.valueForKey("theNUMBER")?.integerValue ?? 0 - Leo Dabus
你应该考虑更改标题,因为目前它不是你真正的问题。 - Arbitur
1
@LeoDabus,你的简单解决方案对我很有效!谢谢! - Chen Li Yong
显示剩余3条评论
4个回答

45

我是否遗漏了什么,或者这不是非常容易吗?

let number1: Int32 = 10
let number2 = Int(number1)

非常奇怪,这在我的编程环境中是可以运行的。你遇到了什么错误? - Eendje
如果转换是按照你所写的那样进行的,那么问题肯定不同。我编辑了问题,以使事情更清晰。我希望这个函数能够正常工作,我认为问题可能与转换有关,但也许并不是。我只是在学习Swift的基础知识。 - Michel
在查看您的编辑之前,如果我没记错的话,核心数据会将数字返回为 NSNumber。通常情况下,使用典型的转换 Int() 应该就足够了。 - Eendje
2016年3月23日;Swift 2.x可行!是最佳答案。 - user3069232
1
@Sarath,这里没有问题,使用Swift 4.1。print(type(of: number2)) 可以很好地打印出 Int - Eendje
显示剩余2条评论

10

在 valueForKey 后面的 ? 是错误的。

Int 初始化程序不接受可选项。

通过执行 myUnit.valueForKey("theNUMBER")?.intValue 会给你一个可选值,而最后的 ! 并不能解决这个问题。

只需替换为以下内容:

return Int(myUnit.valueForKey(“theNUMBER”)!.intValue)

但如果你想要更加安全的话,你也可以这样做:

return myUnit.valueForKey(“theNUMBER”)?.integerValue ?? 0

而要缩短您的函数,您可以这样做:

func myNumber() -> Int {
    let myUnit = self.getObject("EntityName") as! NSManagedObject

    return myUnit.valueForKey("theNUMBER")?.integerValue ?? 0
}

8

Swift 4.0产生了“无法使用类型为‘(() -> Int32)’的参数列表调用Int类型的初始化器”的错误

let number1: Int32 = 10
let number2 = Int(number1)

只需这样做:
Int("\(Int32value)")

我不理解Swift为什么要把事情搞得这么困难。


2
有时候,一些符号会让事情变得扭曲。将"!"添加到Int32,然后将其转换为int即可解决问题。"Original Answer"的翻译是"最初的回答"。
let number1 = someInt32!
let number2 = Int(number1)

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