2016-06-01 2 views
0

ich diesen Code haben unten in AppDelegate.swift implementiert:Wie man Array von NSObject basierend auf vielen Core Data Entities zurückgibt?

func persistentStoreEnsemble(ensemble: CDEPersistentStoreEnsemble, globalIdentifiersForManagedObjects objects: [NSManagedObject]) -> [NSObject] { 
    let entities = objects as! [Category] 
    return entities.map {$0.uniqueIdentifier} 
} 

Dieses Projekt verwendet Core Data und 'Kategorie' ist ein Entity mein Modell bilden.

Problem ist die Funktion funktioniert nur mit der Entität "Kategorie", aber mein Projekt hat Unterkategorie, Artikel, Hinweis und Wiederherstellen als andere Entitäten. Also, wie könnte ich für diese Methode mit allen Entitäten arbeiten und den Wert entsprechend der Entität zurückgeben, die er empfängt?

Also, wie kann ich das tun?

+0

warum zurückkehren Also nicht nur 'objects'? – idmean

+0

Nun, eigentlich kann ich Ihnen nicht antworten, da diese Funktion von einem Framework stammt, also sollte ich ein Array als NSObject zurückgeben. –

+0

Aber '[NSManagedObject]' (der Typ von 'Objekten') ist auch' [NSObject ] '. 'NSManagedObject' erbt von' NSObject'. Sie sollten einfach Objekte zurückgeben können. – idmean

Antwort

0

Endlich habe ich es mit diesem Code arbeiten:

func persistentStoreEnsemble(ensemble: CDEPersistentStoreEnsemble, globalIdentifiersForManagedObjects objects: [NSManagedObject]) -> [NSObject] { 

    var array = [NSObject]() 

    for object in objects { 
     let value: NSObject? = object.valueForKeyPath("uniqueIdentifier") as? NSObject 
     array.append(value!) 
    } 

    return array 

} 
+0

Dies ist ein dynamischer obj-c Ansatz zur Lösung des Problems – Wain

+0

Das verursacht ziemlich viel Typ Casting ... – vadian

Verwandte Themen