我是编程新手所以请耐心等待。
我想要达到的基本要点如下。提示用户在ModalViewController中输入文本,使用Core Data将该文本添加到数据库并在TableViewController中显示该文本。
我已经做了一些广泛的工作,我已经建立了核心数据模型和实体。 ModalViewController是一个UITextFieldDelegate,它调用相应的textFieldDidEndEditing,我设置了self.delegate = self。
我在ModalViewController中创建了一个协议,该协议将文本发送到其呈现的视图控制器。 Presenting View Controller调用Delegate方法并获取文本。所以这就是我被困住的地方。
使用断点和NSLog,我可以看到当表示视图控制器调用该委托方法时,它具有正确的值;无论我添加到模态视图控制器中的是什么值。 NSLog也显示了它。
从这个委托方法,我调用一个useDocument方法,该方法基本上执行3个if语句,检查文档是否已创建,检查文档的状态以及是否已关闭并检查文档是否处于打开状态。
我有一个NSManagedObjectSubClass来表示“Person”实体,因此在该类中,使用类别,我有一个名为personWithName:(NSString *)name inManagedObjectContext
的方法,并且我从useDocument方法调用了一个transactionInDatabase方法,该方法依次调用这个。
Person Category进入并执行insertNewObjectForEntityForName。它变为foward并将person.name的值设置为= name(传入)。
调试显示这是有效的,person.name的值(当然是Person实体中的一个属性)被设置为名称,直到在此方法结束时返回“person”并突然显示值没有。
在模态视图控制器中,“name”属性是非原子的,复制但我尝试了强弱,具有相同的效果。
基本上,我希望用户将文本添加到模态视图控制器中并将该文本添加到数据库中,以便在呈现视图控制器中,当我调用并对该实体执行NSFetchRequest时,结果将显示在TableViewController中。
我知道这是一个相当复杂的设置,但与此同时,我可以想象这也是非常常见的,所以任何关于此的灯光都会被大量赞赏。