1

特定の""でjson形式を取得する際に問題が発生します。辞書であることがわかりますが、辞書を配列に変換するのは間違っていますか?「isReserevble=true」というレコードをプルしてから、UIDatepickerからのユーザー選択に基づいて、テーブルビューのセルに時間だけで「開始」を表示しようとしています。jsonはNSlogを使用していますが、これを理解することはできません。ありがとう

たくさんの辞書を持っているようです。それでも同じ方法を使用しますか?

これが私のコードです。

- (void)viewDidLoad
{
    [super viewDidLoad];
    dispatch_async(kBgQueue, ^{
        NSData* data = [NSData dataWithContentsOfURL: 
                        kLatestKivaLoansURL];
        [self performSelectorOnMainThread:@selector(fetchedData:) 
                               withObject:data waitUntilDone:YES];

    });

}
- (void)fetchedData:(NSData *)responseData {
//parse out the json data

NSError* error;

NSDictionary* json = [NSJSONSerialization JSONObjectWithData:responseData options:kNilOptions error:&error];

NSArray* myslots =[json objectForKey:@"slots"];
NSLog(@"allslots: %@", myslots);


  NSMutableArray *datesArray = [[NSMutableArray alloc] init];
for (NSDictionary *slots in json){
    NSLog(@"isReservable = %@",[myslots objectForKey:@"isReservable"]);
    if ([[myslots objectForKey:@"isReservable"]isEqualToString:@"1"]) 
    {
        NSLog(@"begin = %@",[myslots objectForKey:@"begin"]);
        [datesArray addObject:[myslots objectForKey:@"begin"]];
        NSLog(@"slots array count = %d",[datesArray count]);
    }

}
NSLog(@"This is the begin: %@", datesArray);

}

NSLogのすべてのスロットの結果は次のとおりです。

2012-08-29 11:54:26.531 GBSB[1137:15b03] allslots: {
    "2012-08-29 00:00:00 America/Los_Angeles" =     (
                {
            begin = "2012-08-29 00:00:00 America/Los_Angeles";
            end = "2012-08-29 08:00:00 America/Los_Angeles";
            isPending = 0;
            isReservable = 0;
            isReserved = 0;
            label = " ";
            span = 1;
        },
                {
            begin = "2012-08-29 08:00:00 America/Los_Angeles";
            end = "2012-08-29 08:15:00 America/Los_Angeles";
            isPending = 0;
            isReservable = 1;
            isReserved = 0;
            label = " ";
            span = 1;
        }
    );
}

Ok:これが私が得ているものです

2012-08-30 09:28:30.812 GBSB[835:15b03] its a dictionary
2012-08-30 09:28:30.812 GBSB[835:15b03] isReservable = (null)
2012-08-30 09:28:30.812 GBSB[835:15b03] isReservable = (null)
2012-08-30 09:28:30.812 GBSB[835:15b03] isReservable = (null)
2012-08-30 09:28:30.813 GBSB[835:15b03] This is the begin: (
)
4

2 に答える 2

1

エラーメッセージは-再び-役に立ちます。それを解釈してみてください:

-[__NSCFString objectForKey:]: unrecognized selector sent to instance 0x81e1c80

つまり、解析されたNSDictionaryオブジェクトではなくobjectForKey:JSON文字列オブジェクトにメッセージを送信したということです。これが問題です。

于 2012-08-29T17:31:39.220 に答える
0

問題を引き起こしているのはこのビットです:

for (NSDictionary *tempDict in self.json) {
    [datesArray addObject:[tempDict objectForKey:@"slots"]];
}

JSONのプロパティを要求していると思いますが"slots"、そうではありません。JSONの各子ディクショナリ"slots"のプロパティを要求しています。

代わりにこれを試してください:

[datesArray addObject:[self.json objectForKey:@"slots"]];
于 2012-08-29T17:02:09.180 に答える