我試圖將可選字符串轉換爲字符串,然後轉換爲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