खाली सरणी से ऐरे तत्व का उदाहरण प्राप्त करने का कोई तरीका है? (मैं क्योंकि मैं NSObject
पर कुछ KVC तरीकों का उपयोग dynamic
गुण की जरूरत है)खाली स्विफ्ट ऐरे से ऑब्जेक्ट प्रकार प्राप्त करें
import Foundation
class BaseClass: NSObject {
func myFunction() {
doWork()
}
}
class Car: BaseClass {
dynamic var id: Int = 0
}
class Bus: BaseClass {
dynamic var seats: Int = 0
}
var cars = Array<Car>()
क्या मैं जरूरत है इस तरह इस खाली सरणी से खाली कार वस्तु का उदाहरण पाने के लिए एक vay, उदाहरण के लिए है:
var carFromArray = cars.instanceObject() // will return empty Car object
मुझे पता है कि मैं का उपयोग कर सकते हैं:
var object = Array<Car>.Element()
लेकिन जब से मैं समारोह पैरामीटर से सरणी मिल यह मेरे लिए काम नहीं करता है और मैं इसे तत्व वर्ग है पता नहीं है।
मैं अपने खुद के प्रकार है कि यह कर देगा लिखने की कोशिश की है, और यह काम करता है, लेकिन फिर मैं dynamic
के रूप में चिह्नित नहीं कर सकता, क्योंकि यह उद्देश्य सी में नहीं दर्शाया जा सकता मैं सरणी के विस्तार के बारे में करने की कोशिश की
extension Array {
func instanceObject<T: BaseClass>() -> T? {
return T()
}
}
लेकिन जब मैं इसका उपयोग करता हूं, तो यह कभी-कभी त्रुटि fatal error: NSArray element failed to match the Swift Array Element type
मुझे नहीं लगता कि आप यह कर सकते हैं। जाहिर है अगर सरणी में कोई तत्व है तो आप सरणी या तत्व को पार कर सकते हैं और हम इसके गतिशील प्रकार को सीख सकते हैं। लेकिन यदि आप किसी फ़ंक्शन में खाली सरणी पास करते हैं, तो वह फ़ंक्शन यह नहीं सीख सकता कि किस प्रकार की चीज सरणी _would_ किसी सरणी के _had_ की सरणी हो। – matt
मुझे लगता है कि मैं आपको _why_ के बारे में सोचने के लिए कहूंगा कि आपको विश्वास है कि आपको आत्मनिरीक्षण की इस डिग्री की आवश्यकता है। आप क्या कर रहे हैं _really_ करने की कोशिश कर रहे हैं? – matt