2015-10-26 12 views
11

[Xcode 7.1, आईओएस 9.1]स्ट्रिंग ऐरे को इंट ऐरे स्विफ्ट 2 में कनवर्ट करें?

मैं एक सरणी है: var array: [String] = ["11", "43", "26", "11", "45", "40"]

मैं एक इंट में है कि (प्रत्येक इंडेक्स) कन्वर्ट करने के लिए तो मैं इसका इस्तेमाल कर सकते हैं, एक टाइमर से काउंटडाउन के सूचकांक के संबंधित चाहते हैं ।

मैं String सरणी को स्विफ्ट 2 में Int ऐरे में कैसे परिवर्तित कर सकता हूं?

मैंने कई लिंक की कोशिश की है, कोई भी काम नहीं किया है और उन सभी ने मुझे एक त्रुटि दी है। लिंक से अधिकांश कोड को कम किया गया है या toInt() विधि जैसे स्विफ्ट 2 में अपडेट नहीं किया गया है।

उत्तर

34

UIViewController उपयोग

let array = ["11", "43", "26", "11", "45", "40"] 
var intArray = Array<Int>! 

override func viewDidLoad() { 
    super.viewDidLoad() 
    intArray = array.map { Int($0)!} // [11, 43, 26, 11, 45, 40] 
} 

की तरह एक वर्ग के भीतर map समारोह

let array = ["11", "43", "26", "11", "45", "40"] 
let intArray = array.map { Int($0)!} // [11, 43, 26, 11, 45, 40] 

का उपयोग सरणी विभिन्न प्रकार हैं, तो आप flatMap उपयोग कर सकते हैं केवल आइटम जो Int

में बदला जा सकता पर विचार करने के
let array = ["11", "43", "26", "Foo", "11", "45", "40"] 
let intArray = array.flatMap { Int($0) } // [11, 43, 26, 11, 45, 40] 
+3

नक्शा समारोह यह ठीक है सुझाव है, लेकिन आप खोलना पाठ array.map {इंट ($ 0) के लिए मजबूर करने की अनुशंसा नहीं करना चाहिए ?? 0} एक बेहतर (सुरक्षित) विकल्प होगा –

+1

आप सही हैं, लेकिन प्रश्न में दी गई सरणी संदिग्ध संख्याओं की एक सरणी है। इस प्रकार की देखभाल करने के लिए डेवलपर पर निर्भर है कि वैकल्पिक परीक्षण की वास्तव में आवश्यकता है या नहीं। – vadian

+0

प्रतीक्षा के लिए खेद है! मेरा TableViewController मुझे एक त्रुटि दे रहा है कहता है कि मैं अपने सरणी को "TableViewController" प्रकार में परिवर्तित नहीं कर सकता। क्या TableViewController क्लास के लिए कोई अपवाद है? @vadian 'instance सदस्य 'array' का उपयोग tableViewController' – lukaivicev

1

मैं थोड़ा अलग दृष्टिकोण

let stringarr = ["1","foo","0","bar","100"] 
let res = stringarr.map{ Int($0) }.enumerate().flatMap { (i,j) -> (Int,String,Int)? in 
    guard let value = j else { 
     return nil 
    } 
    return (i, stringarr[i],value) 
} 
// now i have an access to (index in orig [String], String, Int) without any optionals and/or default values 
print(res) 
// [(0, "1", 1), (2, "0", 0), (4, "100", 100)] 
संबंधित मुद्दे