2015-06-11 18 views
22

में कैरेक्टर टू इंट कनवर्ट करें मैं सिर्फ वर्ण को Int में कनवर्ट करना चाहता हूं।स्विफ्ट 2.0

यह आसान होना चाहिए। लेकिन मुझे पिछले जवाब उपयोगी नहीं मिला है। हमेशा कुछ त्रुटि होती है। शायद ऐसा इसलिए है क्योंकि मैं स्विफ्ट 2.0 में कोशिश कर रहा हूं।

for i in (unsolved.characters) { 
    fileLines += String(i).toInt() 
    print(i) 
} 

उत्तर

40

स्विफ्ट 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 है, परिणाम निकाल दिया गया है।

+0

बहुत बहुत धन्यवाद! सब कुछ काम कर रहा है, फाइललाइन को छोड़कर मेरे लिए चींटियों का एक ऐरे है। var fileLines: [int] = [] (यह कहता है कि फ़ाइललाइन का उपयोग नहीं किया जा सकता है + =) – Aaron

+1

आप ऐपेंड विधि का उपयोग कर सकते हैं, या 'फ़ाइललाइन + = [someInt] ' –

3

असल में। एक आसान तरीका स्विफ्ट 2.o में Int करने के लिए स्ट्रिंग परिवर्तित करने के लिए है:

let chars = Int(chars) 

यदि यह आपके लिए ... क्या कोशिश कर रहे हैं लेकिन आप आसानी से निश्चित रूप से, अपने पाश को यह लागू कर सकते हैं सुनिश्चित नहीं हैं।

+0

ऐसा आसान तरीका लगता है। –

+7

'चार्स 'नए बनाए गए स्थिर और' Int' के पैरामीटर दोनों नहीं हो सकते हैं। –

+1

यह एक संकलन त्रुटि देता है –

6

यह एक अपरिवर्तनीय चाल है जिसके साथ मैं आया था। यह Int को Character कन्वर्ट करने के लिए मुश्किल हो सकता है, लेकिन आप आसानी परिवर्तित String को Int यह कर सकते हैं के बाद से:

fileLines = Int(String(i))! 

निश्चित रूप से यह बहुत अच्छी तरह से अनुकूल नहीं है, लेकिन आपके जैसे मामलों के लिए यह चाल कर सकते हैं।

संबंधित मुद्दे