स्विफ्ट 2.0, toInt()
, आदि में, प्रारंभकर्ताओं के साथ प्रतिस्थापित किया गया है।
क्योंकि नहीं सभी स्ट्रिंग्स ints में बदला जा सकता है (इस मामले, Int(someString)
। में), इस प्रारंभकर्ता failable जिसका अर्थ यह रिटर्न एक वैकल्पिक पूर्णांक (Int?
) के बजाय सिर्फ एक Int
है। करने के लिए सबसे अच्छी बात यह है कि if let
का उपयोग करके इस वैकल्पिक को अनचाहे करें।
मुझे यकीन है कि आप के लिए वास्तव में क्या जा रहे हैं नहीं कर रहा हूँ, लेकिन इस कोड स्विफ्ट 2 में काम करता है, और सिद्ध है कि मैं क्या लगता है कि तुम क्या करने की कोशिश कर रहे हैं:
let unsolved = "123abc"
var fileLines = [Int]()
for i in unsolved.characters {
let someString = String(i)
if let someInt = Int(someString) {
fileLines += [someInt]
}
print(i)
}
या एक Swiftier समाधान के लिए, :
let fileLines = unsolved.characters.flatMap { Int(String($0)) }
:
let unsolved = "123abc"
let fileLines = unsolved.characters.filter({ Int(String($0)) != nil }).map({ Int(String($0))! })
// fileLines = [1, 2, 3]
आप इस अधिक flatMap
साथ छोटा कर सकते हैंरिटर्न "Array
पर से अधिक मैपिंग के गैर-शून्य परिणाम युक्त" ... इसलिए Int(String($0))
nil
है, परिणाम निकाल दिया गया है।
स्रोत
2015-06-11 03:43:14
बहुत बहुत धन्यवाद! सब कुछ काम कर रहा है, फाइललाइन को छोड़कर मेरे लिए चींटियों का एक ऐरे है। var fileLines: [int] = [] (यह कहता है कि फ़ाइललाइन का उपयोग नहीं किया जा सकता है + =) – Aaron
आप ऐपेंड विधि का उपयोग कर सकते हैं, या 'फ़ाइललाइन + = [someInt] ' –