Objective c 从json数据填充类

Objective c 从json数据填充类,objective-c,arrays,json,class,sendasynchronousrequest,Objective C,Arrays,Json,Class,Sendasynchronousrequest,我有一个WCF,它以以下格式返回一些json数据: { "RetrieveLocationsResult": [ { "Address": "106 Mullaghboy Road", "Category": "Tarmac", "Closest_Property_Number": 106, "ID": 33, "Image1": 1234, "Image2": 0, "Imag

我有一个WCF,它以以下格式返回一些json数据:

{
"RetrieveLocationsResult": [
   {
        "Address": "106 Mullaghboy Road",
        "Category": "Tarmac",
        "Closest_Property_Number": 106,
        "ID": 33,
        "Image1": 1234,
        "Image2": 0,
        "Image3": 0,
        "Latitude": 5,
        "Longitude": "-1.541902",
        "Notes": "New Driveway",
        "User_ID": 1
    },
    {
        "Address": "3 drumard road",
        "Category": "Tarmac",
        "Closest_Property_Number": 3,
        "ID": 40,
        "Image1": 23421,
        "Image2": 0,
        "Image3": 0,
        "Latitude": 4,
        "Longitude": "-2.541902",
        "Notes": "new gates",
        "User_ID": 1
    },
]
}
这一点在这里可以完全看到

我有一个名为location的类,每个变量都由它组成。我想做的是将这些json数据解析到每个位置,然后创建一个位置数组,这些位置将使用经度和纬度放置在地图上

到目前为止,我分析数据的方法是:

- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view.

     NSString *urlAsString = @"http://crm.fpmccann.co.uk/TemperatureWebService/iphonewebservice.svc/retrievelocations";
     NSURL *url = [NSURL URLWithString:urlAsString];
     NSURLRequest *urlRequest = [NSURLRequest requestWithURL:url];

     [NSURLConnection
      sendAsynchronousRequest:urlRequest
      queue:[[NSOperationQueue alloc] init]
      completionHandler:^(NSURLResponse *response,
                          NSData *data,
                          NSError *error)

      {
          NSLog(@"error: %@", error);
          NSLog(@"data: %@", data);
          NSLog(@"response: %@", response);

          if ([data length] >0 && error == nil)
          {
              NSArray *array = [NSJSONSerialization JSONObjectWithData:data
                                                               options:0
                                                                 error:&error];
              NSLog(@"Response: %@", array);

              CLLocationCoordinate2D location;                         // coordinates of the annotation
              NSMutableArray *newAnnotations = [NSMutableArray array]; // an array in which we'll save our annotations temporarily
              MKPointAnnotation *newAnnotation;                        // the pointer to the annotation we're adding

              NSMutableArray *location = [array valueForKey:@"RetrieveLocationsResult"];


              NSMutableArray *longitude = [[array valueForKey:@"RetrieveLocationsResult"] valueForKey:@"Longitude"];


             // NSLog(@"Response", response, data);
          }
          else if ([data length] == 0 && error == nil)
          {
              NSLog(@"Nothing was downloaded.");
          }
          else if (error != nil){
              NSLog(@"Error = %@", error);
          }

      }];


}
请原谅,这是在视图中加载的,这将在其工作后立即更改。
它正在创建一个名为location的数组,其中有4个对象,但其中没有任何对象。我想做的是创建一个for循环并根据结果填充一个类?

为检索到的结果创建一个JSON字典:

NSDictionary *jsonDict = [NSJSONSerialization JSONObjectWithData:data options:kNilOptions error:nil];
NSMutableArray *retrieveLocationsResultArr = [NSMutableArray arrayWithArray:[jsonDict objectForKey:@"RetrieveLocationsResult"]];

[retrieveLocationsResultArr enumerateObjectsUsingBlock:^(NSDictionary *locationDict, NSUInteger idx, BOOL *stop) {
    //Create your Location Objects
    NSString *addressStr = [locationDict valueForKey:@"Address"];//sample, extract all values you want in your custom objects.
}];

为location类创建一个
initWIthDictionary:(NSDictionary*)dict
方法,让它读取字典并设置对象字段。如果值都很简单,并且字段名与字典键匹配,则可以使用“键/值编码”在一定程度上实现“自动化”。请您对这部分代码进行更好的解释,谢谢[RetrievelociationsResultar EnumerateObjectsSusingBlock:^(NSDictionary*locationDict,NSUInteger idx,BOOL*stop){//创建位置对象NSString*addressStr=[locationDict valueForKey:@“Address”];//示例,提取自定义对象中所需的所有值。}];