2012-08-10 79 views
0

我有一个NSDictionary传递给一个NSObject类,我将所有的值从字典中提取出来并传递给它们正确的类型。从多个变量类型创建一个对象

例如NSInteger,BOOL,NSString,char是我从NSDictionary中拉出的值的类型,并将它们放入它们唯一的变量中。

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

我听说我可以使用类本身作为一个对象..但我不知道如何做到这一点。

或者我可以把它们放回到NSDictionary中?但是如果是这样的话NSDictionaries允许多个值类型吗?

+0

如果您知道元素的数量和类型将保持不变,请将您的密钥设置为静态NSStrings以便于访问。 – CodaFi 2012-08-10 04:58:20

+0

我会这样做,但我需要将它们放入正确的值类型中,因为我必须使用NSStrings和NSInteger值进行排序。 – HurkNburkS 2012-08-10 05:06:09

回答

3

其实,你是在正确的道路上。这基本上就是MVC architecture的方式。所以你在质疑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); 
+0

ahhh !!这是我读过的内容,我只是没有把它正确地内在化在我的脑海中!非常感谢您的帮助!! :)所以它可以,如果你把不同的变量类型放入NSDictionary的不同条目中? – HurkNburkS 2012-08-10 05:01:15

+0

你可以放在不同的类型,但他们必须是对象 - 所以没有布尔或字符 – rdelmar 2012-08-10 05:02:22

+0

哦废话..大声笑hrmm需要重新考虑这种情况:P – HurkNburkS 2012-08-10 05:20:50

0

你可以把值的集合中的NSDictionary,NSArray中,NSMutableArray里,等所有的集合类型。或者,如果您拥有固定数量的值/类型,则可以创建一个具有每个值/类型的数据成员的类并将其放入该类。类解决方案将消除必须进行大量的投射,但它也只适用于有固定数量的值/类型。

这里是AppleDoc on collections

+0

是从NSDictionary返回固定数量的值.. – HurkNburkS 2012-08-10 05:08:43

0

呀,你可以创建一个本身与这些不同的价值观为属性。一旦你把这个对象传递给任何类,你可以通过obj.propertyName .Doing这个铅有访问这些值在MVC模式中创建模态。 如果有任何疑问,请让我知道。

Test *object = [[Test alloc] init]; 
object.testBool=true; 
[email protected]"Test"; 
NSDictionary *passData = [[NSDictionary alloc] initWithObjectsAndKeys:object,@"testObject", nil]; 
Test *getObject = (Test*)[passData objectForKey:@"testObject"]; 
NSLog(@"%d",getObject.testBool); 
NSLog(@"%@",getObject.testString); 

您可以自定义测试类的初始化方法