iOS是否支持类似
的内容s = { x:3,y:5 , o:{x:0,y:1}}
像在Javascript中一样?
或者在iOS中使用类似内容的最佳方法是什么?
答案 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;
然后你分配它并用所需的方法初始化它。