我在使用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]
}
Cannot convert the expression's type 'NSDictionary' to type 'StringLiteralConvertible'
问题出现在词典中。
为什么我不能投射String来获取对象?任何解决方案?
答案 0 :(得分:8)
我认为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]