2017-09-23 16 views
6

मैं अपने कोड को स्विफ्ट 3 से स्विफ्ट 4 में परिवर्तित कर रहा हूं और यह त्रुटि निम्न कोड में प्राप्त कर रहा हूं। मैं भी इस हो रही है जब मैं एक सरणी समतल flatmap इस्तेमाल करने की कोशिशस्विफ्ट 3 से स्विफ्ट 4 में माइग्रेशन - स्ट्रिंग को अपेक्षित स्ट्रिंग में परिवर्तित नहीं कर सकता। एलिमेंट

उम्मीद तर्क प्रकार 'String.Element' (उर्फ 'वर्ण')

के प्रकार का मान 'स्ट्रिंग' कनवर्ट नहीं कर सकता
if favoritedProducts.contains("helloWorld") {} 

कोड की निम्न पंक्ति एक [स्ट्रिंग] नहीं लौटाती है बल्कि यह एक '[स्ट्रिंग। एलिमेंट]' है जिसे मैं इसे [स्ट्रिंग] में कैसे परिवर्तित करूं? अगर मैं इसे [स्ट्रिंग] के रूप में डालने का प्रयास करता हूं, तो यह कहता है कि यह हमेशा असफल रहेगा।

let productIDs = allItems.flatMap{$0.productID} 
+0

मेरे पास एक ही प्रश्न था, आपके लिए +1 – Vats

उत्तर

3

आप एक गैर वैकल्पिकproductID प्रकार String की संपत्ति इस

struct Item { 
    let productID: String 
} 

तरह के साथ एक Item प्रकार है और तुम Item

let allItems: [Item] = ... 

की एक सरणी तब है, तो आप कर सकते हैं map का उपयोग कर productID(s) की एक सरणी प्राप्त करें विधि

let productIDs = allItems.map { $0.productID } 

अब productIDs[String] है।

+2

बहुत बढ़िया। मुद्दा यह था कि जब मैं मानचित्र का उपयोग करने की आवश्यकता थी तो मैं फ्लैटमैप का उपयोग कर रहा था। तेजी से 3 में गलती ठीक थी, लेकिन तेजी से 4 में यह काम नहीं किया क्योंकि तार अब मेरे पात्रों के सरणी हैं। – Nevin

+0

आपके उत्तर ने मेरी मदद की। धन्यवाद, आपके लिए +1। – Vats

+0

हाय, कृपया मेरी मदद करें। मेरे पास स्ट्रिंग की एक सरणी है। एलिमेंट्स और जब मैं स्ट्रिंग में मान निकालने के लिए जाता हूं, तो 'स्ट्रिंग' टाइप करने के लिए त्रुटि, 'प्रकार का मान असाइन नहीं कर सकता' [स्ट्रिंग.इलेमेंट] '(उर्फ' ऐरे ') दिखाता है। । – hilaj

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