如何将UITableView单元映射到远程数据库后端?

时间:2012-07-19 20:02:31

标签: iphone ruby-on-rails api ios4 rubymotion

我正在为带有导轨后端的iPhone制作一个简单的待办事项列表应用程序。

到目前为止,我可以从Web应用程序中提取待办事项列表中的所有tasks,解析JSON,然后将其插入UITableView。

来自rails的json响应:

[
  {"id":1,"name":"Buy bread"},
  {"id":8,"name":"Get gas"},
  {"id":14,"name":"Call John"}
]

在UITableView中,每个任务都有一行,单元格的textLabel是任务的名称:

enter image description here

我现在遇到的问题是如何将单元格与任务的记录ID相关联。

两个任务可以具有相同的名称,因此我不能仅根据名称从哈希中获取id。

我需要记录ID,因此我可以在用户编辑UItableView(例如删除任务)后回发到rails应用程序。

我可以在单元格上设置属性吗?我觉得我错过了一些明显的东西。这是我的第一个iPhone应用程序,所以请保持温和,呵呵。

2 个答案:

答案 0 :(得分:2)

如何将JSON数组转换为Objective-C数组以供在表中使用?您必须再次为该任务的ID执行此操作,并在- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath方法中使用theID = [idArray objectAtIndex:indexPath.row];

之类的内容

答案 1 :(得分:1)

更好的解决方案是在客户端上维护正确的数据模型。您可以使用JSON作为模型,但Core Data更强大一些。你想要的是让你的控制器将它对视图的了解与它对模型的了解相关联。例如,如果使用didSelectRowAtIndexPath:您希望使用此索引路径映射到模型。

在单元格上设置属性的解决方案允许视图的客户端查询数据模型,这违反了MVC范例的规则。它将您的视图与您的模型结合在一起并不是很好。