1

UITableView セルのフォント、textLabel、および色を設定するために、多くのメソッドが iOS 7 で非推奨になりました。また、ビューにこれらの値を入力するのに苦労しています。これが私のコードのスニペットです:

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

                          options:kNilOptions
                          error:&error];

    NSArray* jobs = [json objectForKey:@"results"];

    for(NSDictionary *jobsInfo in jobs) {

        JobInfo *jobby = [[JobInfo alloc] init];
        jobby.city = jobsInfo[@"city"];
        jobby.company = jobsInfo[@"company"];
        jobby.url = jobsInfo[@"url"];
        jobby.title = jobsInfo[@"jobtitle"];
        jobby.snippet = jobsInfo[@"snippet"];
        jobby.state = jobsInfo[@"state"];
        jobby.time = jobsInfo[@"date"];

        jobsArray = [jobsInfo objectForKey:@"results"];
    }
}

GET リクエストから辞書の配列をループして解析しています。現在、UITableView に次のコードを入力しようとしています。

-

 (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{

    // Return the number of rows in the section.
    return [jobsArray count];
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *CellIdentifier = @"Cell";
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) {
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
    }

    NSDictionary *jobsDic = [jobsArray objectAtIndex:indexPath.row];
    [cell.textLabel setText:[jobsDic objectForKey:@"jobtitle"]];


    return cell;
}

また、これは .h ファイルにあると宣言しました。

NSArray *jobsDic;

私が間違っていることについてのアイデアはありますか?これは iOS 7 の問題ですか?

4

2 に答える 2

0

jobsArray の宣言を NSArray から NSMutableArray に変更します。

次のように、 fetchedDataメソッドの先頭に初期化を追加します。

if(!jobsArray) {
   jobsArray = [NSMutableArray array];
}
else {
   [jobsArray removeAllObjects];
}

次の行を削除します。

jobsArray = [jobsInfo objectForKey:@"results"];

その代わりに、初期化されたオブジェクトを for ループの最後に配列に追加します。

[jobsArray addObject:jobby];

[tableView reloadData]を追加します。*-(void)fetchedData:(NSData )responseData;の終わりに メソッドの実装。

最初にビューをロードするときに、tableView にデータが取り込まれます。データを受け取った後、tableView は受け取ったことを知りません。

他のすべては良さそうです。休みがうまくいきますように。

于 2013-10-18T16:47:19.517 に答える