Iphone 使用多个变量类型创建对象

Iphone 使用多个变量类型创建对象,iphone,ios,nsdictionary,nsobject,Iphone,Ios,Nsdictionary,Nsobject,我有一个NSDictionary,我正在将它传递给一个NSObject类,在这个类中,我从字典中提取所有值,并将它们传递到正确的类型中 例如,NSInteger、BOOL、NSString、char是我从NSDictionary中取出并放入它们唯一变量的值类型 我的问题是,将这些值转换为一个大对象,然后将其放入数组的最佳方法是什么 我听说我可以将类本身用作对象。。但我真的不知道如何做到这一点 或者我可以把它们放回字典里吗?。。。但是如果是这样,NSDictionary是否允许多种值类型?事实上,

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

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

我的问题是,将这些值转换为一个大对象,然后将其放入数组的最佳方法是什么

我听说我可以将类本身用作对象。。但我真的不知道如何做到这一点


或者我可以把它们放回字典里吗?。。。但是如果是这样,NSDictionary是否允许多种值类型?

事实上,您走的是正确的道路。基本上就是这样。所以你在质疑M=模型

本例中的模型是定义所有变量的类。切中要害,你应该做以下几点:

->创建一个包含变量的类,使用
@property
&
@synthesis
名称: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);

事实上,你走的路是对的。基本上就是这样。所以你在质疑M=模型

本例中的模型是定义所有变量的类。切中要害,你应该做以下几点:

->创建一个包含变量的类,使用
@property
&
@synthesis
名称: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);

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


以下是。

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


这是。

是的,你可以创建一个本身,将这些作为不同的值作为属性。一旦你将这个对象传递给任何类,你就可以通过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);

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

是的,您可以创建一个本身,将这些作为不同的值作为属性。一旦将此对象传递给任何类,您就可以通过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);

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

如果您知道元素的数量和种类将保持不变,请将密钥设置为静态NSstring以便于访问。我会这样做,但我需要将它们放入正确的值类型中,因为我必须使用NSString和NSInteger值进行排序。如果您知道元素的数量和种类将保持不变,请将键设置为静态NSString以便于访问。我会这样做,但是我需要将它们放入正确的值类型中,因为我必须使用NSStrings和NSInteger值进行排序!!这就是我所读到的,我只是没能在脑海中正确地将它内化!非常感谢您的帮助!!:)所以,如果你在NSDictionary的不同条目中放入不同的变量类型也没关系吧?你可以放入不同的类型,但它们必须是对象——所以bool或charl都不起作用吗?你的意思是把ClassA放进字典而不是我的类吗?事实上我用的是一个常量字符,我想它可能在NSDictionary中工作,我想我可以把BOOL变成那些int BOOL的东西之一。。。我需要仔细研究一下。我不知道你说的“intbool thingies”是什么意思。您可以使用NSNumber的numberWithBool:将BOOL包装到objectahhh!!这就是我所读到的,我只是没能在脑海中正确地将它内化!非常感谢您的帮助!!:)所以,如果你在NSDictionary的不同条目中放入不同的变量类型也没关系吧?你可以放入不同的类型,但它们必须是对象——所以bool或charl都不起作用吗?你的意思是把ClassA放进字典而不是我的类吗?事实上我用的是一个常量字符,我想它可能在NSDictionary中工作,我想我可以把BOOL变成那些int BOOL的东西之一。。。我需要仔细研究一下。我不知道你说的“intbool thingies”是什么意思。您可以使用NSNumber的numberWithBool:将BOOL包装到对象中