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