2017-09-21 14 views
10

में कनवर्ट करते समय 'फ़िल्टर' का संदिग्ध उपयोग मैंने इस परियोजना को स्विफ्ट 4 में बदलने की कोशिश की।प्रोजेक्ट को स्विफ्ट 4

return Forum.threads?.filter({ //... }) 

त्रुटि का कहना है::

'फिल्टर'

की अस्पष्ट उपयोग मिले इस उम्मीदवार (Swift.Set)

मैं इस लाइन पर एक त्रुटि हो रही है इस उम्मीदवार को मिला (स्विफ्ट .equence)

threads वस्तु Forum में इस तरह कार्यान्वित किया जाता है:

var threads: Set<Thread>? 

तो यह कैसे हल करने के लिए ..? आपकी मदद के

संपादित करने के लिए धन्यवाद: जब लॉग में त्रुटि खुलासा, यहाँ उम्मीदवार हैं:

Swift.Set:369:17: note: found this candidate 
    public func filter(_ isIncluded: (Set.Element) throws -> Bool) rethrows -> Set<Element> 
       ^
Swift.Sequence:35:17: note: found this candidate 
    public func filter(_ isIncluded: (Self.Element) throws -> Bool) rethrows -> [Self.Element] 
+0

यदि आप वैकल्पिक को खोलते हैं तो आपको एक ही त्रुटि मिलती है? – Sparky

+0

हाँ मैंने कोशिश की और यह त्रुटि – Someday

+1

एक सरल 'थ्रेड थ्रेड: सेट करें? = सेट(); फ़िल्टर किए गए = धागे? .filter {$ 0.isMainThread} 'मेरे एक्सकोड 9 में संकलित करता है, इसलिए एक * स्वयं निहित * पुनरुत्पादित उदाहरण उपयोगी होगा। –

उत्तर

9

इसे हल करने के लिए, इसे वापस करने से पहले चर के प्रकार की घोषणा करें।

let x: [Character] = input.filter{/**/} 
return x 

यह फिल्टर {} विधि के रिटर्न प्रकार को असंबद्ध करता है।

+2

महान काम करता है। एक और तरीका है '(input.filter {/ ** /} [कैरेक्टर] के रूप में)' यदि आप अस्थायी चर नहीं चाहते हैं। –

0

यहाँ एक सामान्य मुद्दा हो रहा है। उदाहरण के लिए यह UITextView पर एक विस्तार विधि है।

ambiguous filter

आप पाश के लिए एक के रूप में दोबारा लिख ​​कर यह दौर काम कर सकते हैं। (क्षमा करें, बहुत अच्छा समाधान नहीं है लेकिन कम से कम काम करेगा।)

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