我有一个tableview,用户可以使用滑块制作部分人。所以每个部分可以有任意数量的人。我想保存该tableview的状态,然后在它们返回时重新加载它。
我认为,由于我使用核心数据,因此我可以为每个人提供行和节属性。所以我能够保存它,但我不知道在它再次出现时使用这些值来填充tableview的最佳方法。
我认为NSUserDefaults并不是最好的,因为我有很多可以分成几个部分的组。我几天来一直在努力解决这个问题的最好方法,我仍然不确定该怎么做。
更多 (每mihir mehta):
// Set core data values
int sec = 0;
int row = 0;
for (NSArray *section in groupsArray) {
for (People *person in section) {
[person setSubgroupSection:[NSNumber numberWithInt:sec]];
[person setSubgroupRow:[NSNumber numberWithInt:row]];
row++;
}
sec++;
row = 0; // new section so restart the row count
}
答案 0 :(得分:2)
如果您已熟悉CoreData,那么您应该坚持使用您描述的计划。我看待它的方式你应该做出某种TableViewInfoManagedObject:NSManagedObject
。此TableViewInfoManagedObject
应该包含@dynamic numberOfSections
等成员,用于描述表视图工作所需的内容。
如果您使用CoreData管理人员已考虑使用关系将numberOfSections
映射到numberOfGroups
或您People:NSManagedObject
中的任何内容。
此外,您需要考虑何时“保存”您的状态,这似乎完全由滑块决定。在这种情况下,您可能希望为valueChanged实现IBAction
。
编辑0:根据您提供的代码段,它似乎在循环结束时您将拥有所需的必要信息。 sec
的最终值应与UITableViewDataSource
委托方法-(NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
相对应,我不确定为什么要设置People
对象的行号,除非您正在尝试实现某种排序顺序,这应该由NSSortDescriptor
完成。因此,tableView:numberOfRowsInSection
应返回[[peopleinSection: section] count]
之类的内容,并应设置tableView:cellForRowAtIndexPath
,以便返回cell.textLabel.text = [[[peopleInSection:indexPath.section] objectAtIndex:indexPath.row] getPersonName]
之类的单元格。有意义吗?
答案 1 :(得分:1)
如何为需要保存的每个对象创建一个类(NSObject的子类),在该类中,您可以为每个对象添加属性。然后,您可以使用NSKeyedArchiver / Unarchiver来保存和加载对象以便重用。
答案 2 :(得分:0)
创建一个将row和Section作为参数的函数,并通过搜索数组返回该特定的人....明白我的观点?