我已成功将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),则应用程序不会崩溃,但列表中没有数据。
这是我首度使用核心数据的应用程序,因此我需要帮助。
答案 0 :(得分:0)
感谢andrewbuilder。他让我朝着正确的方向看。使用期望Int的谓词的正确方法是:
predicate: NSPredicate(format: "type == %i", Int16(1)))
我本该使用%i时正在使用%@。
答案 1 :(得分:0)
您还可以将int设为NSNumber对象:
NSPredicate(format: "type == %@", @(1))