arrays - मैं कैसे जांच सकता हूँ कि क्या संरचना स्विफ्ट 3 के अपने क्षेत्र के आधार पर संरचनाओं की सरणी में है?




swift swift3 (2)

मेरे swift ऐप में मेरे पास एक संरचना है:

open class MyStruct : NSObject {

    open var coordinate = CLLocationCoordinate2D(latitude: 0, longitude: 0)
    open var username: String? = ""
    open var id: String? = ""
}

और मैं इसे एक सरणी बना देता हूं:

var array:[MyStruct] = []

तब मैं एक ऑब्जेक्ट बना रहा हूं:

let pinOne = MyStruct()
pinOne.coordinate = CLLocationCoordinate2D(latitude: request.latitude, longitude: request.longitude)
pinOne.username = request.username
pinOne.id = request.id

और मैं इसे केवल सरणी में जोड़ना चाहता हूं अगर सरणी में इसे शामिल न हो। मैंने इस के साथ कोशिश की:

if(!(self.array.contains(pinOne))){
    self.array.append(pinOne)
}

लेकिन यह काम नहीं कर रहा था, इसलिए मैंने सोचा कि जब से मेरे पास अद्वितीय id , तो मैं वस्तुओं का तुलना करने के लिए उस क्षेत्र का उपयोग कर सकता हूं। लेकिन मुझे नहीं पता कि इस मामले में संरचनाओं के क्षेत्र की तुलना कैसे करें। क्या उसके लिए आपके द्वारा मेरी मदद की जाएगी?


इसके अस्तित्व को MyStruct से पहले MyStruct ऑब्जेक्ट को बनाने के बजाय आपको केवल तभी बनाने की जरूरत है अगर यह MyStruct में मौजूद नहीं है। साथ ही एक सुझाव के रूप में MyStruct init(coordinate: CLLocationCoordinate2D, name: String, id: String) तरह MyStruct में एक init विधि बनाते हैं, नई लाइन में प्रत्येक इंस्टेंस प्रॉपर्टी के प्रारंभिक कोड को कम कर देंगे।

open class MyStruct : NSObject {

    open var coordinate = CLLocationCoordinate2D(latitude: 0, longitude: 0)
    open var username: String? = ""
    open var id: String? = ""

    init(coordinate: CLLocationCoordinate2D, name: String, id: String) {
        self.coordinate = coordinate
        self.username = name
        self.id = id
    }
}

अब इस तरह के लिए चेक करें।

if !array.contains(where: {$0.id == request.id}) {
    let pinOne = MyStruct(coordinate: CLLocationCoordinate2D(latitude: request.latitude, longitude: request.longitude), name: request.username, id: request.id)
    self.array.append(pinOne)
}

छोटा और सरल:

if array.index(where: {$0.id == pineOne.id}) == nil {
   array.append(pineOne)
}





contains