带有核心数据的SwiftUI:提取谓词失败的请求

时间:2019-08-31 22:13:37

标签: core-data swiftui

我已成功将Core Data添加到我的SwiftUI项目中。我需要按类型过滤结果。当我在提取请求中添加谓词时,应用会在包含该提取请求的视图尝试加载的位置崩溃。

错误是线程1:EXC_BAD_ACCESS(代码= 1,地址= 0x1)

 @Environment(\.managedObjectContext) var managedObjectContext
@FetchRequest(entity: Task.entity(),
    sortDescriptors:[
        NSSortDescriptor(keyPath: \Task.type, ascending: true),
        NSSortDescriptor(keyPath: \Task.totalScore, ascending: false),
    ],
        predicate: NSPredicate(format: "type == %@", Int16(1))) //this is the line that crashes the app
 var tasks: FetchedResults<Task>

如果将Int16(1)更改为Int16(0),则应用程序不会崩溃,但列表中没有数据。

这是我首度使用核心数据的应用程序,因此我需要帮助。

2 个答案:

答案 0 :(得分:0)

感谢andrewbuilder。他让我朝着正确的方向看。使用期望Int的谓词的正确方法是:

predicate: NSPredicate(format: "type == %i", Int16(1)))

我本该使用%i时正在使用%@。

答案 1 :(得分:0)

您还可以将int设为NSNumber对象:

NSPredicate(format: "type == %@", @(1))