ios - "fatal error: unexpectedly found nil while unwrapping an Optional value"尝试将谓词与关系对象一起使用时

标签 ios swift object core-data predicate

我有 Tema、Oppgave 和 Fag 类(class)。一名 Fag 拥有多个 Oppgave,一名 Tema 拥有多个 Oppgave。然而,Tema 中的每个 Oppgave 都有相同的 Fag。

我只想显示其 Oppgaves 具有特定 Fag 的 Temas。

这些是我的相关模型:

class Oppgave: NSManagedObject {

    @NSManaged var isArchived: NSNumber
    @NSManaged var isComplete: NSNumber
    @NSManaged var lflink: String
    @NSManaged var link: String
    @NSManaged var nokkel: String
    @NSManaged var oppgaveNr: NSNumber
    @NSManaged var sett: Sett
    @NSManaged var tema: Tema
    @NSManaged var fag: Fag

}

class Tema: NSManagedObject {

    @NSManaged var title: String
    @NSManaged var oppgave: NSSet

}

class Fag: NSManagedObject {

    @NSManaged var title: String
    @NSManaged var fagKode: String
    @NSManaged var isUnlocked: NSNumber
    @NSManaged var oppgave: NSSet

}

这是我的提取请求:

    //This variable gets a value from a prepareForSegue function earlier
    var fag:Fag!

    var temaer:[Tema] = []
    var fetchResultController:NSFetchedResultsController!


    override func viewDidLoad() {
        super.viewDidLoad()

        println("Oppgaver fetches fra databasen")
        var fetchRequest = NSFetchRequest(entityName: "Tema")
        let sortDescriptor = NSSortDescriptor(key: "title", ascending: true)
        fetchRequest.sortDescriptors = [sortDescriptor]

        //This is the line thats giving me the error
        fetchRequest.predicate = NSPredicate(format: "oppgave.allObjects.first?.fag.fagKode == %@", fag.fagKode)




        if let managedObjectContext = (UIApplication.sharedApplication().delegate as! AppDelegate).managedObjectContext{
            fetchResultController = NSFetchedResultsController(fetchRequest: fetchRequest, managedObjectContext: managedObjectContext, sectionNameKeyPath: nil, cacheName: nil)
            fetchResultController.delegate = self

            var e:NSError?
            var result = fetchResultController.performFetch(&e)
            temaer = fetchResultController.fetchedObjects as! [Tema]


            if result != true{
                println(e?.localizedDescription)
            }
        }

    }

如何消除错误并检索我想要的对象?

最佳答案

由于同一 Tema 的所有 Oppgave 具有相同的 Fag,因此您的要求是“其 Oppgave 具有特定 Fag 的 Temas” ,相当于“Temas,其中任何 Oppgaves 都有特定的 Fag”,其谓词是:

        fetchRequest.predicate = NSPredicate(format: "ANY oppgave.fag == %@", fag)

关于ios - "fatal error: unexpectedly found nil while unwrapping an Optional value"尝试将谓词与关系对象一起使用时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31350308/

相关文章:

ios - 有没有办法配置您的应用程序所需的 ios 版本?

ios - 单击“取消”按钮时,“邮件撰写”不消失

ipad - uisearchbar 未显示键盘

快速组合代码

ios - 添加更多单元格后,某些表格 View 单元格变得不可见。为什么?

multithreading - 通过 block 完成在后台查找对象

javascript - 定义这个对象会导致另一个对象未​​定义吗?

ios - 初始入职后如何过渡到主要应用程序流程

java.util.List 找不到元素

class - 在类内部访问类