好的,我的UITableView加载并按字母顺序放置所有单元格。然后从服务器下载信息并完成计算,一旦一切完成,就重新加载TableView。目前,这是一个相当简单的过程,因为一旦信息从服务器下载,单元格甚至不移动,它们保持字母顺序。除了填写了一半的信息,并根据计算进行了小的更改之外,什么也没有发生。我想知道是否有一个简单的方法,把单元格到部分取决于下载完成后所做的计算?我确实有一个想法,创建4个数组(将只有4节),一旦isLoading设置为no,改变数据源的TableView有节,然而,这听起来有点…不确定的。我知道这是一个理论问题,而不是编码问题,但在我去搞砸我的代码,在什么是肯定是一个愚蠢的低效的方式做的事情,是否有一个简单的方法来"分配"UITableViewCells节?
我这样做的主要问题是,如果用户删除一个单元格,在核心数据中删除适当的条目将有点棘手,容易出错。这让我想到了另一个想法。如果我给Core Data实体添加一个额外属性。该属性将被分配,然后在计算完成后保存。这样做的问题是没有现有的数据库可以工作。必须有一个简洁的方法来实现这一点。
谢谢你的帮助。
如果您实现了与节相关的数据源方法,那么应该没问题。
例如:- numberOfSectionsInTableView
- sectionIndexTitlesForTableView。
任何时候表数据被重新加载(例如,[self。tableView reloadData]),这些方法将被调用,数据将被放置到它们的section中。
请记住,单元格只是模型的可视化表示,在本例中是您获取的数据。细胞不被分配到切片;只要你为你的模型指定(通过表视图数据源和委托方法),就可以简单地创建它们。
关于删除条目,而使用核心数据,我建议看一下NSFetchedResultsController。后者将监视对表数据的任何更改,并在更新时通知其委托,即表视图控制器。
例如,删除将像正常一样从调用表视图委托开始(即通过tableView:didEndEditingRowAtIndexPath)。在后者中,您将从核心数据中删除条目(例如,[self.myDatabase])。获取deleteObject:实体)。假设你启动了NSFetchedResultsController与相同的托管对象上下文,删除将自动反射回你的用户。
如果你使用一个远程数据库,然而,你还必须执行一个保存(无论你已经实现了),以确保数据库也被更新。
还请注意,如果你使用NSFetchedResultsController,你不需要实现section数据源方法,因为NSFetchedResultsController可以为你处理。只需在数据模型中定义键路径,它将在初始化NSFetchedResultsController时返回区段名称。