Ios 更新应用程序后在应用程序中添加新数据
我正在制作一个简单的三层应用程序,第一层和第二层都有桌面视图 TableView控制器中的行名称保存在plist文件的数组中。当用户重新排序行时,我只是将新的顺序保存为Ios 更新应用程序后在应用程序中添加新数据,ios,objective-c,tableview,plist,nsuserdefaults,Ios,Objective C,Tableview,Plist,Nsuserdefaults,我正在制作一个简单的三层应用程序,第一层和第二层都有桌面视图 TableView控制器中的行名称保存在plist文件的数组中。当用户重新排序行时,我只是将新的顺序保存为NSUserdDefaults对象中的新数组。每次加载tableview控制器时,我都会检查NSUserdDefaults对象是否为空。如果它不是空的,我从NSUserdDefaults中的数组中获取行顺序,否则–从plist文件 下面是一级tableview控制器的代码示例 - (void)viewDidLoad { [sup
NSUserdDefaults
对象中的新数组。每次加载tableview控制器时,我都会检查NSUserdDefaults
对象是否为空。如果它不是空的,我从NSUserdDefaults
中的数组中获取行顺序,否则–从plist文件
下面是一级tableview控制器的代码示例
- (void)viewDidLoad {
[super viewDidLoad];
self.title = @"Topics";
// Checking User changes
NSMutableArray* sectionList = [NSMutableArray arrayWithArray:[[NSUserDefaults standardUserDefaults] objectForKey:@"section"]];
if ([sectionList count] != 0) {
self.sections = [[NSMutableArray alloc] initWithArray:sectionList copyItems:YES];}
else {
NSString *filePath = [[NSBundle mainBundle] pathForResource:@"myFile" ofType:@"plist"];
self.sections = [NSMutableArray arrayWithContentsOfFile:filePath];}
- (void)tableView:(UITableView *)tableView moveRowAtIndexPath:(NSIndexPath *)fromIndexPath toIndexPath:(NSIndexPath *)toIndexPath{
NSString *item = [self.sections objectAtIndex:fromIndexPath.row];
[self.sections removeObject:item];
[self.sections insertObject:item atIndex:toIndexPath.row];
[[NSUserDefaults standardUserDefaults] setObject:self.sections forKey:@"section"];}
问题在于更新。如果我在plist文件和更新应用程序中添加一些新数据(新行),用户将不会在tableview控制器中看到新行,因为他的NSUserdDefaults
对象不是空的,并且将从该对象加载行名称和顺序。我正在考虑清除NSUserdDefaults
对象,但我找不到如何在更新之后进行,也没有更多的时间
你对如何处理这件事有什么想法吗
非常感谢您提供的任何帮助您可以这样说:
对。在转换代码中,当您检测到应用程序的版本与保存的数据的版本不同后,请检查变量是否存在-如果不存在,则必须创建变量并为其指定默认值。谢谢!我理解其中的逻辑,我可以问一些额外的问题吗(我是iOS新手):当然可以给我写封信,如果问题比较大,可以在单独的问题中发帖。谢谢。1) “bundle version”是什么意思2)我如何检查更新发生了-我的意思是,我如何知道我需要增加版本号。3) “新属性”-您是指将保存在NSUserDefaults中但以前未保存的一些额外数据?例如,在版本2中,我将开始保存行的数量,并且还没有更新到版本2的用户,但是更新到版本3的用户将没有该对象。因此,我需要检查是否存在所有NSUserDefaults对象,如果不存在,则创建它们。正确的?