我试图将JSON的结果放入NSArray中

时间:2014-04-04 14:57:20

标签: ios iphone objective-c json

我试图从JSON查询中提取结果并将这些结果放入NSArray中,以便我可以在TableView中列出结果。

这是我在PHP中的switch语句:

switch ($_POST['command']) {

    case "account":
        account($_SESSION['IdUser']);break;     

}

然后,在我的api.php文件中,我有以下功能,允许我查询该数据库以提取帐户所有者为“登录/会话”用户的所有帐户。

function account($IdUser) {
    $login = query("SELECT IdUser, name FROM account WHERE IdUser='%d'", $IdUser);
}

以下是我从查询中获取这些值的代码。

NSMutableDictionary* params =[NSMutableDictionary dictionaryWithObjectsAndKeys:
                                  @"account", @"command", nil];
    [[API sharedInstance] commandWithParams:params onCompletion:^(NSDictionary *json) {
        NSArray* res = [json objectForKey:@"result"];

    }];

然后我创建了Tableview方法......

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
    return [res count];
}

然后......

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

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:simpleTableIdentifier];

    if (cell == nil) {
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:simpleTableIdentifier];
    }
    cell.textLabel.text = [res objectAtIndex:indexPath.row];
    return cell;
}

当我运行iOS模拟器时,我的表格中没有任何值。

1 个答案:

答案 0 :(得分:0)

首先添加一个属性:

@property (nonatomic, strong) NSArray *res;

然后你可以

    NSMutableDictionary* params =[NSMutableDictionary dictionaryWithObjectsAndKeys:
                                      @"account", @"command", nil];
     [[API sharedInstance] commandWithParams:params onCompletion:^(NSDictionary *json) {
     self.res = [json objectForKey:@"result"];
    [self.tableView reloadData]; 
        }];

    - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
    {
        return [self.res count];
    }


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

        UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:simpleTableIdentifier];

        if (cell == nil) {
            cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:simpleTableIdentifier];
        }
NSDictionary *user = [self.res objectAtIndex:indexPath.row];
        cell.textLabel.text = [user objectForKey:@"name"];
        return cell;
    }