2014-10-30 46 views
11

我需要將NSString轉換爲Swift中的整數:下面是我正在使用的當前代碼;這是行不通的:如何使用Swift將NSString轉換爲整數?

var variable = (NSString(data:data, encoding:NSUTF8StringEncoding)) 
exampeStruct.otherVariable = (variable).intValue 

變量是一個正常的varable,並exampleStruct是一個子變量otherVariable在代碼中的其他地方一個結構。

我希望它設置exampleStruct.otherVariableNSStringint價值,但我得到了以下錯誤:

"Cannot convert the expression's type() to type Float" 

如何轉換的NSStringint斯威夫特?

+9

快速查看文檔如何? https://developer.apple.com/library/mac/documentation/Cocoa/Reference/Foundation/Classes/NSString_Class/#//apple_ref/occ/instp/NSString/intValue。 – 2014-10-30 20:20:50

回答

1

您必須在那裏打開2個optionals,注意我還聲明瞭變量爲String並在其中添加了「:String」。例如:

if let variable:String = NSString(CString:"1", encoding: NSUTF8StringEncoding) { 
    if let otherVariable = variable.toInt() { 
     println(otherVariable) // "1" 
    } 
} 

在你的情況,你應該這樣做:

if let variable:String = NSString(data: data, encoding: NSUTF8StringEncoding) { 
    if let exampeStruct.otherVariable = variable.toInt() { 
     println(exampeStruct.otherVariable) // "1" 
    } 
} 
+0

在Swift 2中移除了toInt()函數。我們必須使用int的構造函數,它接受一個字符串 - Int(myString)。請參閱此答案以獲取更多詳細信息:http://stackoverflow.com/a/30739522/878414 – Vaquita 2017-05-11 04:11:36

1

它在我看來像這個問題可能不是Int轉換,而是exampleStruct期待一個浮點數。

但是,如果這不是問題(並且授予,Swift的Xcode錯誤通常似乎更多關於行號而不是實際問題),那麼類似這樣的事情應該適合您?

var ns:NSString = "1234" 
if let i = (ns as String).toInt() { 
    exampleStruct.otherVariable = i 
} 
1

我知道你已經得到了你的答案,但我只是想解釋一下(我認爲)可能不平凡

首先,我們有一些NSData我們要轉換爲NSString,因爲沒有人擔保的數據是一個有效的UTF8緩衝區,它返回一個可選

var variable = NSString(data:data, encoding:NSUTF8StringEncoding) 

這意味着variable: NSString?

通常NSString橋接到SWIFT的String,但在這種情況下,我們使用一個NSString構造 - 你可以考慮一下多爲「基礎」般的語法,並沒有直接導入到SWIFT(因爲是爲NSData沒有橋)

我們仍然可以使用 '基金會' 的方式與NSString

if let unwrappedVariable = variable { 
    var number = unwrappedVariable.intValue 
} 

如果numberFloat,但是字符串是一個整數的字符串表示

if let unwrappedVariable = variable { 
    var number: Float = Float(unwrappedVariable.intValue) 
} 

如果兩個number及(表示)的字符串是浮筒:

if let unwrappedVariable = variable { 
    var number:Float = unwrappedVariable.floatValue 
} 

無論如何,有一個小問題,使用基礎。對於這些類型的轉換,它沒有可選值的概念(對於int,float)。如果它不能將字符串解析爲整數或浮點數,它將返回0。這就是爲什麼使用快速本機更好String

if let variable: String = NSString(data: data, encoding: NSUTF8StringEncoding) { 
    if let integer = variable.toInt() { 
     var integerNumber = integer 
     var floatNumber = Float(integer) 
    } 
}