我在创建一个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’类型
问题出在词典中.
为什么我不能将String转换为获取对象?有解决方案吗
解决方法
我认为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]
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。