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]

相关文章

UITabBarController 是 iOS 中用于管理和显示选项卡界面的一...
UITableView的重用机制避免了频繁创建和销毁单元格的开销,使...
Objective-C中,类的实例变量(instance variables)和属性(...
从内存管理的角度来看,block可以作为方法的传入参数是因为b...
WKWebView 是 iOS 开发中用于显示网页内容的组件,它是在 iO...
OC中常用的多线程编程技术: 1. NSThread NSThread是Objecti...