我的应用程序中有一个绑定到NSArrayController的CoreData。它还绑定到显示数据的TableView。两个按钮绑定到添加和删除行的ArrayController。所有这些都如出一辙。我可以添加、编辑、保存和删除CoreData条目。
我的应用程序中有一个部分是接受文件中的拖放操作(工作)。它从文件中获取数据,查找各种信息,并通过NSArray控制器将这些信息插入核心数据数据库。
我将处理文件解析/添加的类作为IB中的对象添加到数据库中。我为类中的数组控制器创建了一个IBOutlet,并将控制器绑定到类的引用出口。
如果我向接口添加一个按钮以直接调用将自定义记录添加到数据库中的方法,则所有操作都正常。如果该方法是通过拖放操作调用的,则什么都不起作用,甚至记录一个简单的arrayController className也返回null (尽管在单击按钮调用该方法时返回了NSArrayController )。
我能看到的唯一不同是,当通过按钮单击访问时,直接调用该方法,而另一种方式是在加载解析类之前遍历我的拖放类,但我完全无法解决这种情况。我很乐意提供代码,只是不确定您需要哪些代码。
任何帮助都是非常感谢的。谢谢!
==================
UPDATE原来是将IBOutlet连接到IB中的一个类(视图的一个子类)对象,而不是连接到视图本身来处理删除。把这些联系起来让事情变好了。嗯,不工作,我现在还有其他问题要解决,但是Array控制器现在已经被实例化了。
发布于 2014-02-05 13:53:29
从注释移到回答:您要添加的数组控制器没有实例化。我想您不是指原来的NSArrayControllerinstance,而是指一个新创建的?可能是类实例之间的通信问题。
发布于 2014-02-05 13:59:09
调试这应该很简单..。使用调试器。设置几个断点(每个动作设置一个按钮调用,每个点设置一个断点,其中类实例要相互交谈(导入器和主控制器))。当调试器在每个断点发生故障时,运行、测试、逐步遍历代码。
我的猜测是:在IB中没有连接(是零),也没有在运行时重新连接(请参见-awakeFromNib,并确保在尝试使用它时,您没有试图在运行时接触到未在运行时完全重新连接的插座或操作)。
发布于 2014-02-05 11:59:51
有些事情不太对劲,但无论如何你都不想这样做。通过NSArrayController插入没有好处。只需使用NSEntityDescriptions创建新对象:
+ (id)insertNewObjectForEntityForName:(NSString *)entityName inManagedObjectContext:(NSManagedObjectContext *)context;你就完蛋了。如果您的NSArrayController连接正确,它将在事件结束时自动获取新对象,以便用户“立即”看到它们。
https://stackoverflow.com/questions/21564711
复制相似问题