我在UINavigation环境中使用它。 我有 customClassA 。它继承了 customClassB ,其中一个对象是NSMutableDictionary。
我在viewController中分配和初始化customClassA,然后为了添加数据,我将一个新的viewController推入堆栈。 addNewDataViewController通过其委托发回新添加的数据, customClassB 对象。到目前为止一切正常。
customClassA 必须使用密钥(从NSDate创建的NSString)将返回的对象( customClassB )存储到其NSMutableDictionary对象中。
我得到“变异方法发送到不可变对象”的错误,并没有想到任何解决方案。 任何帮助表示赞赏。
感谢。
===========================
interface customClassA : NSObject
{
NSDate date;
NSArray *array; // will contain only NSString objects
}
// and the rest as customary
...
#import "customClassA.h"
interface customClassB : NSObject
{
NSString *title;
NSMutableDictionary *data; // will contain values of customClassA with keys of NSString
}
// and the rest as customary
...
#import "customClassB"
#interface firstViewController : UITableViewController <SecondViewControllerDelegate>
- (void)viewDidLoad
{
self.customClassB_Object = [customClassB alloc] init];
// and the rest...
}
- (void)secondViewControllerDidSaveData:(customClassA *)aData
{
[self.customClassB_Object.data setObject:aData forKey:[NSString stringWithFormat:@"%@", aData.date]];
// update tableView
}
答案 0 :(得分:1)
确保使用类似
的内容初始化NSMutableDictionary
NSMutableDictionary *myDictionary = [[NSMutableDictionary alloc] init];
您的NSMutableDictionary
似乎是使用NSDictionary
实例创建的,而不是NSMutableDictionary
答案 1 :(得分:0)
Althoguh我将以下代码添加到customClassB实现中,它仍然无效。
#implementation customClassB
- (id)init
{
self = [super init];
if (self)
self.data = [NSMutableDictionary alloc] init];
return self;
}
所以我在customClassB实现中添加了两个自定义方法,并在头文件中添加了:
- (void)appendData:(customClassA *)aData;
- (void)removeDataWithKey:(NSString *)aKey;
而不是在我的viewController中操作customClassB的数据代码,我只是调用该方法并将数据对象传递给类,它就可以实现。