0

JSONを提供するRESTfulAPIがあります。私はそれをこのように呼んでいます:

- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.
    dispatch_async(kBgQueue, ^{
        NSData* data = [NSData dataWithContentsOfURL: 
                        kProjectList];
        [self performSelectorOnMainThread:@selector(fetchedData:) 
                               withObject:data waitUntilDone:YES];
    });
}

次に、fetchedDataメソッドがあります。

- (void)fetchedData:(NSData *)responseData {
    //parse out the json data
    NSError* error;
    NSDictionary* json = [NSJSONSerialization 
                          JSONObjectWithData:responseData //1

                          options:kNilOptions 
                          error:&error];
    //NSArray *projects = [json objectForKey:@"name"]; //2

    NSLog(@"name: %@", json); //3
}

// NSArray行のコメントを外すと、-[__NSCFArray objectForKey:]: unrecognized selector sent to instance 0x6d81720

コメントアウトすると、私の辞書は次のように記録されます。

(
        {
        "created_at" = "2012-04-04T01:46:51Z";
        description = "First Project Created";
        id = 1;
        name = "Test 1";
        "updated_at" = "2012-04-04T01:46:51Z";
    },
        {
        "created_at" = "2012-04-04T01:47:23Z";
        description = "Second Project Created";
        id = 2;
        name = "Test 2";
        "updated_at" = "2012-04-04T01:47:23Z";
    }
)
4

1 に答える 1

1

配列の辞書ではなく、辞書の配列があります。objectForKeyの代わりに、objectAtIndexを使用して、ディクショナリに割り当てます。これを行う:

NSDictionary *projects = [[json objectAtIndex:0] objectForKey:@"name"];
于 2012-04-04T02:52:45.727 に答える