2

次のようなjsonリクエストからNSDictionaryを受信しました。

RESULT : (
    {
    Id1 = 138;
    lat = "45.5292910";
    long = "-73.6241500";
    order = "2343YY3"

},
    {
    Id1 = 137;
    lat = "45.5292910";
    long = "-73.6241500";
    order = "2343YY3"

}, etc.

TableView(CellforRowAtIndexPath)に表示したいので、NSArrayとしてデータを取得します。各キー、、、などがNSArrayとして作成されているため、このメソッドは非効率的であるように思われますId1。これlatにより、それぞれを:などlongで表示できます。[self.data1 objectAtIndex:indexPath.row]; [self.data2 objectAtIndex:indexPath.row]

4つのNSArrayを作成して使用せずに、どうすれば同じことを実現できますか?データを格納する単一のNSArrayまたはNSMutableDictionaryを使用できますか?

更新しました:

TableViewが読み込まれると、最初は空ですが、同じVCに、フォームのモーダルビューを読み込むボタンがあります。フォームをロードしてからそれを閉じてTableViewに戻ると、データがロードされます。私が欠けているものを提案してもらえますか?

4

2 に答える 2

3

はい、単一のアレイを使用できます。秘訣は、各配列エントリが辞書を保持する配列を作成することです。次に、配列をクエリしてテーブルビューにデータを入力します。

例:配列が呼び出されたプロパティであり、呼び出されたtableDataカスタムテーブルビューセルがあるCustomCell場合、コードは次のようになります。

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
    // Return the number of sections.
    return 1;
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
    // Return the number of rows in the section.
    return [self.tableData count];
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    static NSString *CellIdentifier = @"CustomCell";

    CustomCell *cell = (CustomCell *)[tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    // Configure the cell...
    cell.latitude.text = [[self.tableData objectAtIndex:indexPath.row] objectForKey: @"lat"];
    cell.longitude.text = [[self.tableData objectAtIndex:indexPath.row] objectForKey:@"long"];
    // continue configuration etc..
    return cell;
}

同様に、テーブルビューに複数のセクションがある場合は、配列の配列を作成します。各サブ配列には、そのセクションのディクショナリが含まれます。テーブルビューにデータを入力するコードは、次のようになります。

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
    // Return the number of sections.
    return [self.tableData count];
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
    // Return the number of rows in the section.
    return [[self.tableData objectAtIndex:section] count];
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    static NSString *CellIdentifier = @"CustomCell";

    CustomCell *cell = (CustomCell *)[tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    // Configure the cell...
    cell.latitude.text = [[[self.tableData objectAtIndex:indexPath.section] objectAtIndex:indexPath.row] objectForKey: @"lat"];
    cell.longitude.text = [[[self.tableData objectAtIndex:indexPath.section] objectAtIndex:indexPath.row] objectForKey:@"long"];
    // continue configuration etc..
    return cell;
}

TL; DR; JSONデータから作成された辞書を取得し、それらを配列に配置します。次に、配列をクエリしてテーブルビューにデータを入力します。

于 2012-11-02T03:13:28.173 に答える
0

次のように実行できます。

// main_data = Store your JSON array as "array of dictionaries"

次に、cellForRowAtIndexPath次のようにします。

NSDictionary *obj = [main_data objectAtIndex: indexPath.row];
// Access values as follows:
[obj objectForKey: @"Id1"]
[obj objectForKey: @"lat"]
...
...
于 2012-11-02T02:37:44.357 に答える