我在创建一个NSDictionary来获取我的CoreData模型中的对象时遇到了问题.
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] }
无法将表达式的类型’NSDictionary’转换为’StringLiteralConvertible’类型
问题出在词典中.
解决方法
我认为title和fireDate是可选属性 – 如果是,那就是原因. NSDictionary无法存储nil值.
你应该:
>仅存储非零值(由您决定如何使用可选绑定显式解包)
>使用快速字典
如果这是你的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") }
相反,如果您选择swift词典:
let notDict: [String:AnyObject?] = ["title":notificatie.title,"fireDate": notificatie.fireDate]