我找到了一种将字符串转换为NSNumber的方法,但代码是Objective-C.我曾try 将其转换为Swift,但它不起作用.

我使用的代码是:

NSNumberFormatter *f = [[NSNumberFormatter alloc] init];
f.numberStyle = NSNumberFormatterDecimalStyle;
NSNumber *myNumber = [f numberFromString:@"42222222222"];

在Swift中,我是这样使用它的:

var i = NSNumberFormatter.numberFromString("42")

但这个代码不起作用.我做错了什么?

推荐答案

Swift 3.0

NSNumber(integer:myInteger)变成了NSNumber(value:myInteger)

let someString = "42222222222"
if let myInteger = Int(someString) {
    let myNumber = NSNumber(value:myInteger)
}

Swift 2.0

像这样使用Int()初始化器.

let someString = "42222222222"
if let myInteger = Int(someString) {
    let myNumber = NSNumber(integer:myInteger)
    print(myNumber)
} else {
    print("'\(someString)' did not convert to an Int")
}

如果你已经知道字符串可以完全转换,或者你根本不在乎,这可以在一行中完成.

let myNumber = Int("42222222222")!

Swift 1.0

使用toInt()法.

let someString = "42222222222"
if let myInteger = someString.toInt() {
    let myNumber = NSNumber(integer:myInteger)
    println(myNumber)
} else {
    println("'\(someString)' did not convert to an Int")
}

Swift相关问答推荐

如何取消正在视图修改器中运行的任务

并发访问SWIFT中数组的非重叠子范围

出错-无法将季节类型的值转换为预期的参数类型';[水果]';

UICollectionViewCompostionalLayout Collectionview单元格宽度在重新加载数据后未正确调整大小

如何使用AsyncTimerSequence获取初始时钟,然后在指定的时间间隔内开始迭代?

物理主体未与 spritekit Swift 的网格图案上的纹理图像对齐

如何判断设备是否为 Vision Pro - Xcode 15 Beta 4

SwiftUI 拖放:如果没有上下文类型,则无法解析对成员‘first’的引用

如何删除快速处理消息

将每个枚举 case 与 Swift 中的一个类型相关联

如何测试可选 struct 的协议一致性

Swiftui 按钮依次显示一组图像

SwiftUI:决定键盘重叠的内容

无法分配给属性:absoluteString是一个只能获取的属性

Swift 4 Decodable - 以枚举为键的字典

iOS:检测设备是否为 iPhone X 系列(无框)

Swift 3.0 的 stringByReplacingOccurencesOfString()

在 Swift for iOS 中沿圆形路径绘制文本

URLComponents.url 为零

Facebook SDK 4.0 IOS Swift 以编程方式注销用户