2015-10-10 16 views
6

ho questo pezzo di codice, che stava lavorando ok in XCode6 (Swift 1.2), ma non con la Swift 2:NSManagedObject.setValue (valore: ANYOBJECT ?, Forkey chiave: String) provoca un errore nel Swift 2.0

class func findOrCreate<T: NSManagedObject>(type: T.Type, attribute: String, value: AnyObject?) -> T { 
    if let object = T.MR_findFirstByAttribute(attribute, withValue: value) as? T { 
     return object 
    } else { 
     let object = T.MR_createEntity() as! T 
     if let value:AnyObject = value { 
      object.setValue(value, forKey: attribute) 
     } 
     return object 
    } 
} 

errore mostra sulla riga contenente object.setValue con il messaggio:

uso ambiguo di 'setValue (_: Forkey :)'

penso che non riconosce oggetto di essere di NSMa tipo nagedObject ma non sono sicuro al 100%, qualsiasi indizio sul perché questo accada molto apprezzato.

risposta

6

Ho postato stessa domanda sul Forum Apple e ottenuto una risposta con una soluzione per questo problema:

 let object = T.MR_createEntity() as! NSManagedObject 
     if let value:AnyObject = value { 
      object.setValue(value, forKey: attribute) 
     } 
     return object as! T 

Questo funziona come previsto. Ho inviato anche una segnalazione di bug ad Apple.

+0

buon lavoro, mi sono imbattuto in questo stesso problema, e il tuo commento mi ha aiutato! aggiorna qui sulla risoluzione del Bug di Apple. Grazie! –

4

più Una possibile soluzione è questa:

(object as NSManagedObject).setValue(value, forKey: attribute) 
+0

grazie! oggi ho anche incontrato lo stesso problema. Questo bug esiste ancora con Xcode 7.3.1. – Buju

Problemi correlati