2014-10-21 18 views
8

CoreData Modelimde bir nesneyi almak için NSDictionary yapmayla ilgili bir sorun yaşıyorum. İfade 'NSDictionary' türü 'StringLiteralConvertible' türüne dönüştürülemiyor.

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'

sorun Sözlük içindedir.

Nesneyi almak için neden bir dize ekleyemiyorum? Herhangi bir çözüm?

cevap

8

title ve fireDate'ın isteğe bağlı özellikler olduğunu varsayalım - evetse, nedeni budur. NSDictionary, nil değerlerini kaydedemez.

You should ya: bu nasıl olursa

  • hızlı Dictionary
  • kullanmak

    • mağaza dışı nil değerleri sadece (opsiyonel, bağlayıcı açıkça Çizelgesi kullanılarak nasıl sana bağlı) Notificatie sınıfınız, aşağıdaki gibi görünür:

      1. seçeneği kullanarak Eğer Sözlük olmayan tek nil değerlerine eklemek gerekir: bunun yerine hızlı sözlüğe seçerseniz

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

      :

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

    Hmmm ... İsteğe bağlı Özellikleri ile ne anlama geldiğini emin değilim. Bunu nasıl değiştirebilirim? – SwingerDinger

    +0

    Güncelleştirme yanıtla – Antonio

    +0

    Teşekkürler! Şimdi anlıyorum :) – SwingerDinger

    İlgili konular