如何从Web服务获取ID并使用它来查找对象

时间:2014-03-18 23:54:40

标签: ios objective-c

在我的应用程序中,我使用Web服务中的一系列作业填充tableview。每个工作都有一个我可以抓住的特定工作ID。现在,当有人从表视图中点击作业时,它们将被带到DetailsViewController,后者显示有关该作业的所有信息。到目前为止,我的代码看起来像是在详细信息视图控制器中设置作业标题:

-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
if ([segue.identifier isEqualToString:@"next"])
{

    NSString *theCorrectUrlString = [NSString stringWithFormat:@"%@", theUrlString];
    NSURL *url = [NSURL URLWithString:theCorrectUrlString];

    NSData *data = [NSData dataWithContentsOfURL:url];

    NSError *error;

    NSMutableArray *jobsCallArray = [NSJSONSerialization JSONObjectWithData:data options:kNilOptions error:&error];


    for (NSDictionary *theJob in jobsCallArray)
    {
        DetailsViewController *detailVC = (DetailsViewController*)segue.destinationViewController;

        NSString *jobPosTitle = theJob[@"position_title"];

        [detailVC  setJobTitleString:jobPosTitle];

    }

    }
}

但是,这段代码为每个单元格提供了相同的职位。我想知道如何在表格视图中选择特定的作业,并在一个页面上显示所有细节。

所有的帮助都表示赞赏,提前谢谢。

1 个答案:

答案 0 :(得分:0)

你的代码没有多大意义。在这个小片段中,您将遍历整个数组,并为每个对象调用setJobTitleString,但显然无论这个setJobTitleString方法做什么,该值都会被覆盖而且您只是看到最后一个值。

for (NSDictionary *theJob in jobsCallArray)
{
    DetailsViewController *detailVC = (DetailsViewController*)segue.destinationViewController;
    NSString *jobPosTitle = theJob[@"position_title"];
    [detailVC  setJobTitleString:jobPosTitle];
}

我无法解释如何解决这个问题,因为我不知道你要做什么。在dataWithContentsOfURL内使用prepareForSegue检索数据很奇怪,特别是因为您要检索所有数据,但显然您只想显示一个项目的详细信息。