我试图将可选字符串转换为字符串,然后转换为Int64。将可选字符串转换为Int64
let number = blog["number"] as! String
print(Int64(number))
问题是“数字”键是一个可选的字符串,所以它在去Int64时崩溃。我有几个方法来删除可选类型,但都没有工作。
我试图将可选字符串转换为字符串,然后转换为Int64。将可选字符串转换为Int64
let number = blog["number"] as! String
print(Int64(number))
问题是“数字”键是一个可选的字符串,所以它在去Int64时崩溃。我有几个方法来删除可选类型,但都没有工作。
guard let string = blog["number"] as? String else {
/* Not a string, handle error here */
return
}
guard let number = Int64(string) else {
/* string isn't an Int64, handle error here */
return
}
//use number here
您还可以使用if let
做解缠,如果你不想退出你的函数。这不是漂亮,但:
if let string = blog["number"] as? String else {
if let let number = Int64(string) {
//use number here
}
else {
/* string isn't an Int64, handle error here */
}
}
else {
/* Not a string, handle error here */
}
我实现你的第二个解决方案和字符串仍然是可选的,如果让string = blog [“number”] as?字符串如果让数字= Int64(字符串){ } – user1079052
}确定吗?不要使用第二种解决方案,它仅仅是一个例子,显示如果可以使用“如果”。请尽可能使用'guard'。 – Alexander
我使用了第一个解决方案,但失败了。当它进入第二次检查时,变量字符串仍然是可选的。 – user1079052
作为替代方案,您可以利用的NSNumberFormatter
(具体计算财产longLongValue
)从Foundation
:
import Foundation
let dict = ["number": "500"]
if let str = dict["number"],
let num = NSNumberFormatter().numberFromString(str)?.longLongValue {
/* 'num' is Int64 representation of 'dict["number"]', and we
reach this scope only if it exists and can validly be
represented as an Int64 number */
}
如何'blog'声明? – vacawama
'as!'的意思是“请让我崩溃”。你得到了你所要求的。 – matt
什么'print(blog [“number”] !. dynamicType)'print? – vacawama