我有一个NSDictionary,我将它传递给NSObject类,我将所有值从字典中提取出来并将它们传递给正确的类型。
例如NSInteger,BOOL,NSString,char是我从NSDictionary中提取并放入其唯一变量的值的类型。
我的问题是什么是将这些值转换为一个大对象然后可以推入数组的最佳方法?
我听说我可以将类本身用作对象..但我不确定如何做到这一点。
或者我可以将它们放回NSDictionary中吗?...但是如果是这样的话,NSDictionaries允许多种值类型吗?
答案 0 :(得分:3)
实际上,你走的是正确的道路。这基本上是MVC architecture方式。所以你质疑M =模型。
此处的模型示例是定义所有变量的类。切入点,这是你应该做的:
- >创建一个包含变量的类,@property
& @synthesize
名称:ClassA。
然后你可以将对象ClassA设置为字典。
ClassA *myClass = [[ClassA alloc] init];
myClass.myString = @"test String";
myClass.myBoolean = True;
[dictionary setObject:myClass forKey:@"myObject"];
[myClass release]; //we no longer need the object because already retain in dictionary.
然后通过以下方式检索它:
ClassA *myClass = (ClassA*)[dictionary objectForKey:@"myObject"];
NSLog(@"this is value of myString : %@ & boolean : %i",myClass.myString,myClass.myBoolean);
答案 1 :(得分:0)
您可以将值集合放在NSDictionary,NSArray,NSMutableArray等中。任何集合类型。或者,如果您有固定数量的值/类型,则可以创建一个具有每个值/类型的数据成员的类,并将其放入其中。类解决方案将消除必须进行大量的转换,但它也仅在存在固定数量的值/类型时才有效。
答案 2 :(得分:0)
是的,你可以用属性创建一个类本身作为不同的值。一旦你将这个对象传递给任何一个类,你可以通过< strong> obj.propertyName 。由此引导以 MVC 模式创建模态。 如果有疑问,请告诉我。
Test *object = [[Test alloc] init];
object.testBool=true;
object.testString=@"Test";
NSDictionary *passData = [[NSDictionary alloc] initWithObjectsAndKeys:object,@"testObject", nil];
Test *getObject = (Test*)[passData objectForKey:@"testObject"];
NSLog(@"%d",getObject.testBool);
NSLog(@"%@",getObject.testString);
您可以自定义Test Class的 init 方法。