繁体   English   中英

如何将NSString转换为Int,以便我可以添加Swift 3.0

[英]How to convert NSString to Int so I can add in swift 3.0

我有一个似乎是Int的值,但是当我输入type(of:value)时,它返回Optional,在尝试了许多事情之后,我发现数据类型为NSString。

let sum = data[0]["total1"] + data[0]["total2"]

我有两个这样的值,但我想将它们相加,但是它不允许我说“二进制运算符+无法应用于两个“任何”操作数”或“类型为“任何”的值没有成员'intValue' ”。

如何将“任何”转换为Int,以便可以添加它们?

提前致谢。

使用可选绑定确保值是非nil字符串,并且可以将它们转换为Int

if let str1 = data[0]["total1"] as? String, let str2 = data[0]["total2"] as? String {
    if let int1 = Int(str1), let int2 = Int(str2) {
        let sum = int1 + int2
    } else {
        // One or more of the two strings doesn't represent an integer
    }
} else {
    // One or more of the two values is nil or not a String
}

由于基础对象是NSString ,因此您还可以执行以下操作:

if let num1 = (data[0]["total1"] as? NSString)?.intValue,
   let num2 = (data[0]["total2"] as? NSString)?.intValue {
    let sum = num1 + num2
}

正如@rmaddy在评论中指出的那样,如果值不是整数(例如"hello" ),它将转换为0 根据您对应用程序正在接收的数据的了解以及在这种情况下要发生的情况,该结果可能合适也可能不合适。

Int(str)相比, .intValue更能容忍字符串数据格式。 前导空格和尾随空格将被忽略,浮点值(如13.1将转换为整数。 同样,这取决于您想要在应用程序中发生什么。

这是我的方法:

extension String {
    var asInt: Int? {
        return Int(self)
    }
    var isInt: Bool {
        return Int(self) != nil
    }
}

call it as follows (assuming a property called result):

        let stringOne = "14"
        let stringTwo = "12"
        if  stringOne.isInt && stringTwo.isInt {
            self.result = stringOne.asInt + stringTwo.asInt
        }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM