这个想法是一个“列表”实体可以访问许多“ItemList”实体,即列表上将有多个项目。我试图通过以下方式将项目添加到列表实体:
APIDataManager
使用行LocalDataManager
连接两者,如上图所示。
但是,在另一个视图控制器中,我从核心数据中检索此对象并尝试访问其 let newList = NSEntityDescription.insertNewObjectForEntityForName("List", inManagedObjectContext: context) as! List
newList.name = listName
newList.shoppingDate = shoppingTripDate
newList.eventDate = eventDate
let itemEnt = NSEntityDescription.insertNewObjectForEntityForName("ItemList", inManagedObjectContext: context) as! ItemList
itemEnt.item = "Eggs"
itemEnt.list = newList
属性,如下所示:
ItemEnt.list = newList
这会导致程序崩溃。
我错过了什么或做错了吗?
编辑: 这是它在终端中产生的错误
***由于未捕获的异常'NSInvalidArgumentException'终止应用程序,原因:' - [_ NSFaultingMutableSet item]:无法识别的选择器发送到实例0x7fd0a4951960'
答案 0 :(得分:1)
该错误告诉您itemList
是NSSet
。这是有道理的,因为核心数据与众多关系的运作方式。它还告诉您NSSet
没有名为item
的方法,这也是有道理的。您试图在NSSet
NSSet
上没有shoppingListObject!.itemList!
调用方法,这就是应用崩溃的原因。
从您的模型图表中,NSSet
是ItemList
的{{1}}个实例。您可以使用NSSet
方法访问各个实例。
但我同意马丁的评论 - 你能够编译这段代码很奇怪。斯威夫特应该抓住这一点,除非你做了一些不寻常的事情,否则就会阻止它这样做。