0

我有一个 NSDictionary,我将它传递给一个 NSObject 类,在其中我将所有值从字典中提取出来并将它们传递给它们的正确类型。

例如 NSInteger、BOOL、NSString、char 是我从 NSDictionary 中提取并放入它们唯一变量的值类型。

我的问题是将这些值变成一个可以放入数组的大对象的最佳方法是什么?

我听说我可以将类本身用作对象。但我不确定如何做到这一点。

还是我可以将它们放回 NSDictionary 中?...但是如果是这种情况,NSDictionaries 是否允许多种值类型?

4

3 回答 3

3

事实上,你走在正确的道路上。这基本上是MVC 架构方式。所以你在质疑 M = Model。

此处示例中的模型是定义所有变量的类。切入点,这是你应该做的:

-> 创建一个包含您的变量的类,@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);
于 2012-08-10T04:53:34.130 回答
0

您可以将值的集合放在 NSDictionary、NSArray、NSMutableArray 等任何集合类型中。或者,如果您有固定数量的值/类型,您可以创建一个类,该类具有每个值/类型的数据成员并将其放入其中。类解决方案将无需进行大量转换,但它也仅在存在固定数量的值/类型时才有效。

这是关于集合的 AppleDoc

于 2012-08-10T04:57:41.617 回答
0

是的,您可以使用这些作为属性的不同值来创建一个本身。一旦您将此对象传递给任何类,您就可以通过obj.propertyName访问这些值。由此 Lead 执行以在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);

您可以自定义测试类的init方法。

于 2012-08-10T05:14:02.980 回答