2014-10-21 8 views
8

मुझे अपने CoreData मॉडल में ऑब्जेक्ट प्राप्त करने के लिए NSDictionary बनाने में कोई समस्या है।'CoreringLiteralConvertible' टाइप करने के लिए अभिव्यक्ति के प्रकार 'NSDictionary' को परिवर्तित नहीं कर सकता

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'

समस्या शब्दकोश में है।

ऑब्जेक्ट प्राप्त करने के लिए मैं स्ट्रिंग क्यों नहीं डाल सकता? कोई भी समाधान?

उत्तर

8

मुझे लगता है कि title और fireDate वैकल्पिक गुण हैं - यदि हां, यही कारण है। NSDictionarynil मानों को संग्रहीत नहीं कर सकता है।

आप चाहिए या तो: केवल

  • दुकान गैर शून्य मान (कैसे,, वैकल्पिक बाध्यकारी स्पष्ट रूप से unwrapped का उपयोग कर आप पर निर्भर)
  • एक तेज शब्दकोश

का उपयोग करते हैं कि यह कैसे है आपकी Notificatie कक्षा इस तरह दिखती है:

class Notificatie { 
    var title: String? 
    var fireDate: NSDate? 
} 

पहला विकल्प का उपयोग कर आप शब्दकोश केवल गैर-शून्य मान जोड़ना चाहिए:

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

हममम ... सुनिश्चित नहीं हैं कि वैकल्पिक गुण के साथ क्या मतलब है। मैं इसे कैसे बदल सकता हूं? – SwingerDinger

+0

अद्यतन उत्तर देखें – Antonio

+0

धन्यवाद आदमी! मैं इसे अब समझता हूँ :) – SwingerDinger

संबंधित मुद्दे

 संबंधित मुद्दे