iOS,为数组创建对象

时间:2015-01-21 11:37:18

标签: ios objective-c afnetworking

我使用AFNetworking来获取JSON数据。 responseObject包含一系列对象,如:[{"id":"XX", "description":"XX"}, {"id":"XX", "description":"XX"}]。此内容会复制到NSArray,其中objectAtIndex: valueForKey:可获取价值访问权。

我知道object-c过于复杂,所以我猜这是一厢情愿的想法,但是如果在responseObject为零的情况下创建一个快速对象呢?

(任何承诺的对象-c编码员,你必须原谅我的直言不讳。使用更高级别的语言导致逻辑上的无知)

if responseObject is nil
  destinationArray= [{id:XX, description:XX}, {id:XX, description:XX}]
else
  destinationArray = responseObject

2 个答案:

答案 0 :(得分:0)

你可以用Objective-C文字来做到这一点:

if (!responseObject) {
  destinationArray= @[
      @{ @"id":@"XX",
         @"description":@"XX"},
      @{ @"id":@"XX",
         @"description":@"XX"}
  ];
} else {
  destinationArray = responseObject;
}

其中:

  • NSArray个对象为@[ ... ]
  • NSDictionary个对象为@{ ... }
  • NSString个对象为@"string"
  • NSNumber个对象为@(1)@(1.2f)@(1.2)@(YES)

答案 1 :(得分:0)

您显示的数据有两部分:

多个NSDictionaries,有很多方法可以创建它们:

NSDictionary *dictionary = [NSDictionary dictionaryWithObjects:...,nil];

或者您可以使用其文字

来定义它们
NSDictionary *dictionary = @{@"id":@"XX", @"description":@"XX"};

NSArray,要创建一个数组,您可以使用几个选项:

NSArray *array = [NSArray arrayWithObjects:...,nil];

或者,就像之前一样,您可以使用文字定义:

NSArray *array = @[dictionary1,dictionary2];

因此,您可以像这样创建整个对象:

if (responseObject == nil) {
    destinationArray = @[@{@"id":@"XX", @"description":@"XX"}, 
                         @{@"id":@"XX", @"description":@"XX"}];
} else {
    destinationArray = responseObject;
}

阅读详情:https://developer.apple.com/library/ios/documentation/Cocoa/Conceptual/ProgrammingWithObjectiveC/FoundationTypesandCollections/FoundationTypesandCollections.html