谓词无法从Core Data

时间:2018-05-09 11:34:33

标签: ios swift xcode swift4

我是ios的新手。我正在尝试从核心数据中获取特定数据。我已经创建了实体及其属性。我有一个coursework实体,里面有几个属性以及一个task实体。课程作业与任务之间的关系是1对多。

我已经实现了保存功能,将课程设置保存到核心数据中。我现在正在尝试实现一个保存功能,以将任务保存到课程作业对象(取决于用户选择的内容等)。我是这个概念的新手,所以我想编写它的方法是获取课程作业对象,创建任务对象,并将任务放在课程作业对象中基本上更新课程作业对象?这是解决这种情况的正确方法吗?

所以现在,我想根据一些属性获取特定的课程,但我的谓词似乎没有工作,我不知道为什么。这就是我的保存任务功能(它没有完全实现):

@IBAction func saveTask(_ sender: UIButton) {
    //First validate the form

    //save if validation successful
    if(validateTextField(tf: textFieldTaskName) && validateDate(startDate: startingDate, dueDate: dueDate)){
        let appDelegate = UIApplication.shared.delegate as! AppDelegate
        let context = appDelegate.persistentContainer.viewContext

        let fetchrequest = NSFetchRequest<NSManagedObject>(entityName: "Coursework")
        print(courseworkLevel + courseworkName)
        fetchrequest.predicate = NSPredicate(format: "%K == %@ AND %K == %@", "courseworkName", courseworkName, "level", Int16(courseworkLevel)!)

        do{
            let profiles = try context.fetch(fetchrequest) as! Coursework

            print("SUCCESSFULLY FETCHED" + profiles.courseworkName!);
        }catch{
            print("...UNABLE TO FETCH")
        }
    }}

错误出现在fetchrequest.predicate = NSPredicate(format: "%K == %@ AND %K == %@", "courseworkName", courseworkName, "level", Int16(courseworkLevel)!)行和此代码之前的print语句确认我用于过滤的那些变量填充了正确的值。我收到以下错误: Thread 1: EXC_BAD_ACCESS (code=1, address=0x4)以及

 2018-05-09 12:33:16.668196+0100 dummyapp[11954:376059] [MC] System group container for systemgroup.com.apple.configurationprofiles path is /Users/jack/Library/Developer/CoreSimulator/Devices/78BDDD68-8B2E-4C0A-80AD-27604D054E09/data/Containers/Shared/SystemGroup/systemgroup.com.apple.configurationprofiles
2018-05-09 12:33:16.668563+0100 dummyapp[11954:376059] [MC] Reading from private effective user settings.

有人可以解释为什么会发生这种情况,以及我在使用核心数据创建和更新对象方面的方法是否正确?

0 个答案:

没有答案