2014-10-21 5 views
8

Ich habe ein Problem mit der Erstellung eines NSDictionary, um ein Objekt in meinem CoreData-Modell zu erhalten.Der Typ des Ausdrucks 'NSDictionary' kann nicht in den Typ 'StringLiteralConvertible' konvertiert werden

let moc:NSManagedObjectContext = SwiftCoreDataHelper.managedObjectContext() 
    let results:NSArray = SwiftCoreDataHelper.fetchEntities(NSStringFromClass(Notificatie), withPredicate: nil, managedObjectContext: moc) 

    for notificatie in results 
    { 
     let singleNotificatie:Notificatie = notificatie as Notificatie 

     let notDict:NSDictionary = ["title":notificatie.title, "fireDate":notificatie.fireDate] 

    } 

Cannot convert the expression's type 'NSDictionary' to type 'StringLiteralConvertible'

Das Problem ist im Dictionary.

Warum kann ich keine Zeichenfolge in das Objekt werfen? Irgendeine Lösungsmöglichkeit?

Antwort

8

Ich nehme an, dass die title und fireDate optionale Eigenschaften sind - wenn ja, das ist der Grund. A NSDictionary kann nil Werte nicht speichern.

Sie sollten entweder:

  • store Nicht-Null-Werte nur (bis zu Ihnen, wie, optional Bindung verwenden, explizit ausgepackt)
  • Ein geschickter Wörterbuch verwenden

Wenn dies ist, wie Ihre Notificatie Klasse sieht so aus:

mit der ersten Option

let notDict:NSDictionary = NSDictionary() 

if let title = notificatie.title { 
    notDict.setValue(title, forKey: "title") 
} 

if let fireDate = notificatie.fireDate { 
    notDict.setValue(fireDate, forKey: "fireDate") 
} 

Wenn Sie stattdessen für die schnelle Wörterbuch entscheiden: Sie sollten nur nicht-Null-Werte zum Wörterbuch hinzufügen

let notDict: [String:AnyObject?] = ["title":notificatie.title, "fireDate": notificatie.fireDate] 
+0

Hmmm ... Nicht sicher, was Sie mit optionalen Eigenschaften bedeuten. Wie könnte ich das ändern? – SwingerDinger

+0

Siehe aktualisierte Antwort – Antonio

+0

Danke Mann! Ich verstehe es jetzt :) – SwingerDinger

Verwandte Themen