如何在swift中将Int转换为int?

时间:2015-05-05 18:16:29

标签: ios swift

我有一个名为Int

类型的变量
var number = value!.integerValue as Int

现在我必须使用该值创建一个NSNumber对象。

我正在尝试使用此构造函数

value = NSNumber(int: number)

,但它不起作用。

它期望原始类型为int,而不是Int我猜。

任何人都知道怎么解决这个问题?

谢谢!

3 个答案:

答案 0 :(得分:6)

您只需value = number

正如您在文档中看到的那样:

https://developer.apple.com/library/ios/documentation/Swift/Conceptual/BuildingCocoaApps/WorkingWithCocoaDataTypes.html

原生swift数字类型通常直接桥接到NSNumber

Numbers

Swift automatically bridges certain native number types, such as Int and Float, to NSNumber. This bridging lets you create an NSNumber from one of these types:

SWIFT

let n = 42
let m: NSNumber = n
It also allows you to pass a value of type Int, for example, to an argument expecting an NSNumber. Note that because NSNumber can contain a variety of different types, you cannot pass it to something expecting an Int value.

All of the following types are automatically bridged to NSNumber:

Int
UInt
Float
Double
Bool

Swift 3更新

在Swift 3中,这种桥接转换不再是自动的,您必须明确地将其转换为:

let n = 42
let m: NSNumber = n as NSNumber

答案 1 :(得分:4)

问题是因为在ObjC中,int是32位数字,而integerNSInteger是64位数。

var number = value!.integerValue as Int

Number为Int类型,对应于ObjC类型NSInteger

您现在尝试使用此创建:

value = NSNumber(int: number)

它采用Int32int类型,从而导致失败。你有几个可行的选择。

一:

value = NSNumber(int: Int32(number))

两个(可能更好):

value = NSNumber(integer: number)

三(可能最好):

正如@Dima指出的那样,您可以直接设置它,因为swift会自动转换:

value = number

答案 2 :(得分:4)

对于Swift 3,你必须使用:

unsigned char