在ios中创建对象的最简单方法

时间:2011-12-07 13:26:44

标签: objective-c ios

iOS是否支持类似

的内容
s = { x:3,y:5 , o:{x:0,y:1}} 
像在Javascript中一样?

或者在iOS中使用类似内容的最佳方法是什么?

6 个答案:

答案 0 :(得分:4)

字面翻译将是:

NSDictionary *s = [NSDictionary dictionaryWithObjectsAndKeys:
                        [NSNumber numberWithInt:3], @"x",
                        [NSNumber numberWithInt:5], @"y",
                        [NSDictionary dictionaryWithObjectsAndKeys:
                                 [NSNumber numberWithInt:0], @"x",
                                 [NSNumber numberWithInt:1], @"y",
                                  nil ], @"o",
                        nil  ];

但即使在编程语言中,字面翻译也不是最好的。这一切都取决于背景和你需要完成的事情。根据您的需要,可能需要的代码更少。


编辑:现在有一个新的literal syntax允许进一步缩小此代码:

NSDictionary *s = @{ @"x": @3
                   , @"y": @5
                   , @"o": @{ @"x": @0, @"y": @1}
                   };

这种语法隐含地创建了NSDictionary& NSNumber对象。

答案 1 :(得分:3)

不,Objective-C中没有dicts的快捷语法。你必须手动完成。

答案 2 :(得分:2)

这取决于你的意思是什么类型的对象。这里确实没有一般的答案。

例如,如果你指的是NSDictionary,你可以使用

+ (id)dictionaryWithObjects:(NSArray *)objects forKeys:(NSArray *)keys

或同一页面上记录的任何变体。

答案 3 :(得分:1)

您可以做的是创建一个JSON字符串,然后使用JSON框架生成相应的NSArray / NSDictionary结构。这将接近你想要做的事情,但不是那么......然后你可以用这样的东西描述你的对象结构:

{"x": 3, "y" : 5, "o" : {"x": 0, "y" : 1}}

主要限制是你不会有开箱即用的数字类型,但你可以使用NSNumber,NSScanner等来获取它们。

答案 4 :(得分:1)

您可以编写一个setter或helper方法,它可以采用上述格式的字符串,语法检查,解析它,并使用字符串字段从一行调用中自动创建或修改NSDictionary。

但它不是Obj C或NSFoundation框架的构建函数。一些JSON类别的添加可能会做这样的事情。

答案 5 :(得分:0)

不,它不支持。但我很抱歉,我不熟悉JS。

要在iOS中创建obj,请执行以下操作:

ObjName *objVar;

然后设置其属性:

@property (nonatomic, strong) ObjName *objVar;

然后在.m

中将其同步
@syntesize objVar;

然后你分配它并用所需的方法初始化它。