我的代码中有一点问题,我开始怀疑它是否是一个设计问题..
我将appDelegate类视为我的应用程序的主要模型。使用appDel类,我有一个viewcontroller。在我的appdelegate类中,我存储了一个名为blocks的NSMutableArray,它包含了我的所有块对象模型。类似地,在我的viewcontroller中,我有一个名为blockViews的相同NSMutableArray,它存储了我的所有块对象视图。从模型接收通知后更新视图的方式是通过KVO。在我的viewcontroller中,我在块数组中(在app委托中)观察每个块的每个location属性,并在blockViews中更新相应的blockView。
我也设置好了,每当我在appDel中的块数组中添加一个对象时,它就会在blockViews数组的末尾添加一个对象。现在,当我尝试从块数组中移除一个对象时(在appDel类中),我的问题出现了。我不会总是删除最后一个对象,所以我被困在如何获取我想要删除的对象的实际索引,以便我可以删除我的blockViews NSMutableArray中的相应索引。
在我的observeValueForKeyPath方法中,传递的对象是appDelegate类,因为我正在从我的viewcontroller观察整个块数组(我实现了索引数组访问器以允许发生KVO通知),因此对象是传入observeValueForKeyPath实际上是对我的appDelegateClass的引用(这很有意义)。
但是,由此,我无法获得从块数组中删除了哪个对象的索引。有没有人对我如何改变它以提供索引或获得正确索引的方法有任何建议?
有没有办法观察数组的添加或删除,并且将传递给我的observeValueForKeyPath方法的对象是自己添加/删除的块,而不是appdelegate类?
答案 0 :(得分:2)
你不能使用indexOfObject...
(几种变体)来获取索引,然后在两个数组中删除它吗? (你意识到NSMutableArray实现了NSArray的所有方法,对吗?)