ios – 无法将表达式的类型’NSDictionary’转换为’StringLiteralConvertible’类型

前端之家收集整理的这篇文章主要介绍了ios – 无法将表达式的类型’NSDictionary’转换为’StringLiteralConvertible’类型前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我在创建一个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]

猜你在找的iOS相关文章