Iphone 删除/移动';附加到web服务的

Iphone 删除/移动';附加到web服务的,iphone,web-services,uitableview,ios,asihttprequest,Iphone,Web Services,Uitableview,Ios,Asihttprequest,删除或移动使用本地数据(如NSArray)备份的UITableView的行非常简单且即时: 从数组中删除该值 调用deleteRowsAtIndexPaths:withRowAnimation: 利润 但是我的表视图与web服务进行通信,这意味着一旦点击该行上的“删除”按钮,我就必须将请求转发到服务器(当然是通过),获取响应,然后告诉表视图运行其小的删除行动画,所有这一切都需要几秒钟的延迟 从高层来看,最好的方法是什么?将一些回调选择器放入ASIHTTPRequest的字典 对于一些漂亮的UI触

删除或移动使用本地数据(如NSArray)备份的UITableView的行非常简单且即时:

  • 从数组中删除该值
  • 调用
    deleteRowsAtIndexPaths:withRowAnimation:
  • 利润 但是我的表视图与web服务进行通信,这意味着一旦点击该行上的“删除”按钮,我就必须将请求转发到服务器(当然是通过),获取响应,然后告诉表视图运行其小的删除行动画,所有这一切都需要几秒钟的延迟

    从高层来看,最好的方法是什么?将一些回调选择器放入ASIHTTPRequest的字典


    对于一些漂亮的UI触控,比如即将删除的单元格上的某种微调器,有一些额外的好处。

    我所知道的最优雅的方式是将核心数据用于本地数据,并让您的UITableView监听核心数据存储中的更改通知。这样可以保持模型/视图分离,但仍然可以获得行删除动画的视觉效果。事情是这样的:

    • 用户说删除一行
    • 您的代码发送一个ASIHTTPRequest,并注册一个选择器,以便在请求成功时回调
    • 完成后,回调选择器将修改核心数据存储中的模型
    • 这会自动通知UITableView行已删除,因此它可以设置行删除的动画
    这不会得到额外的分数,因为它不会给你任何类型的UI指示,表明该单元格将很快被删除。我有时会考虑做一件事,但没有足够的勇气去尝试,那就是乐观地编写代码,假设web服务调用几乎肯定会成功,所以在ASIHTTPRequest指示成功/失败之前,立即删除该行;但是,如果它确实失败了,请回滚,并使该行重新显示。这样做的好处是,在web服务调用成功的常见情况下,应用程序的运行速度要快得多。核心数据为您提供了两种方法来执行这种“回滚”操作,但它肯定会变得棘手,因此可能不值得

    如果您不想使用核心数据,那么对我来说KVO是第二好的解决方案


    编辑:再仔细考虑一下,为了获得一个视觉指示器,表明该行即将被删除,您的核心数据模型可以在每一行上都有一个标志,“markedForDeletion”或其他什么;当启动ASIHTTPRequest时,还需要修改模型以将MarkedForDelete设置为true。UITableView将收到更改通知(因为它已注册通知);因此,它将在行的顶部执行您想要的任何UI,例如微调器或其他东西,以指示它正在被删除。然后,如果ASIHTTPRequest成功,它只删除该行;但是如果失败,它会将行“markedForDeletion”标志设置回false,这会导致UITableView关闭微调器。

    我认为在AsitpRequest中抛出一些回调选择器是很简单的。我不了解用户界面的触感,你想让我们为你设计一个用户界面吗?