2014-09-25 16 views
5

पर एनएसएआरएआरई की सामग्री जोड़ना मैं अपने ऐप में दोनों तेज और उद्देश्य-सी का उपयोग कर रहा हूं।स्विफ्ट ऐरे

मेरे पास कस्टम क्लास है और मैं कक्षा के लिए एक त्वरित सरणी बनाना चाहता हूं और इसे अपने उद्देश्य-सी वर्ग से पुरानी क्लास नामक सामग्री जोड़ना चाहता हूं जिसमें इन ऑब्जेक्ट्स की सरणी एनएसएआरएआरई में है जिसे arrayOfCustomClass कहा जाता है।

'[(CustomClass)]' is not identical to 'CGFloat' 

कोई मदद:

var newArray = [CustomClass]() 
newArray += oldClass.arrayOfCustomClass 

यह एक त्रुटि का कारण बनता है? धन्यवाद रेजा

+1

शेष वास्तविक कोड दिखाएं! 'OldClass' क्या है? 'ArrayOfCustomClass' क्या है? – matt

उत्तर

0

समस्या यह है कि स्विफ्ट को एनएसएआरएआरई में क्या कुछ भी पता नहीं है। आपको NSArray को [CustomClass] पर स्पष्ट रूप से डालना होगा (और आप बेहतर झूठ नहीं बोलेंगे या आप रनटाइम पर क्रैश करेंगे)।

+0

लेकिन यहां अतिरिक्त समस्याएं हो सकती हैं, जो तब तक नहीं जानी जाएंगी जब तक कि आप यह प्रकट न करें कि 'arrayOfCustomClass' वास्तव में क्या है। – matt

+0

जैसा कि मेरा उत्तर नीचे दिखाता है, मुझे कस्टम क्लास – reza23

+0

पर डालने से पहले मुझे किसी भी ऑब्जेक्ट पर जाने की आवश्यकता है, यह वैकल्पिक कलाकार के साथ सुरक्षित रूप से किया जा सकता है - मेरा उत्तर देखें। –

0

क्या काम करने के लिए लगता है:

newArray += oldClass.arrayOfCustomClass as AnyObject as [CustomClass] 
0

ऐसा करने के लिए सुरक्षित रूप से आप सिर्फ एक वैकल्पिक कलाकारों की कोशिश की जरूरत है। अगर आपको लगता है NSArray ही प्रकार CustomClass का तत्व है, तो आप ऐसा कर सकते हैं:

var newArray = [CustomClass]() 
if let customArray = oldClass.arrayOfCustomClass as? [CustomClass] { 
    newArray += customArray 
} 

आप CustomClass तत्वों को निकालने के लिए चाहते हैं (आप क्या पूछा से थोड़ा अलग, मुझे पता है), तो इस तरह से है:

var newArray = [CustomClass]() 
for element: AnyObject in oldClass.arrayOfCustomClass { 
    if let custom = element as? CustomClass { 
     newArray.append(custom) 
    } 
} 
संबंधित मुद्दे