2014-07-13 13 views
10

sto ottenendo un errore quando si cerca di estrarre un oggetto da un NSDictionary a Swift:tipo 'String' non è conforme al protocollo di errore 'NSCopying' quando ottenere oggetto da NSDictionary

tipo 'String' non lo fa conforme al protocollo 'NSCopying'

Ho provato a trasmettere la chiave da String a NSString ma non risolvo il problema. Qualcuno può far luce? Ecco il codice:

var excerciseCategoryDictionary = object as NSDictionary 

let category = NSEntityDescription.insertNewObjectForEntityForName(NSStringFromClass(ExcerciseCategory.self), 
          inManagedObjectContext: AppDelegate.sharedInstance().managedObjectContext) as ExcerciseCategory 

category.name = excerciseCategoryDictionary["name"] 

L'errore si verifica sull'ultima riga.

enter image description here

+0

Caro downvoter, cabina, per favore dimmi perché '-1'? – RaffAl

risposta

18

Swift converte automaticamente NSDictionary come Dictionary<NSObject, AnyObject>. Se si sa che un valore memorizzato in un NSDictionary è una stringa, è necessario eseguire il cast su String.

Il problema nel tuo caso è circa il valore, non la chiave, in modo da avere solo per lanciare il seguente:

category.name = excerciseCategoryDictionary["name"] as String 

o

category.name = excerciseCategoryDictionary["name"] as String? 

seconda da quello che è il tipo effettivo del oggetto stai assegnando il valore

+0

Hai perfettamente ragione. Grazie! – RaffAl

Problemi correlati