Iphone 如何在第二个Tableview中显示选定的plist数据?
在我的应用程序中,我有两个表视图,一个是我的主表视图,另一个是我最喜欢的表视图。首先,我在主视图中显示我的所有plist数据,当我单击主表视图的任何一行时,它将转到下一个类,如下面的屏幕截图所示Iphone 如何在第二个Tableview中显示选定的plist数据?,iphone,xcode,plist,nsuserdefaults,Iphone,Xcode,Plist,Nsuserdefaults,在我的应用程序中,我有两个表视图,一个是我的主表视图,另一个是我最喜欢的表视图。首先,我在主视图中显示我的所有plist数据,当我单击主表视图的任何一行时,它将转到下一个类,如下面的屏幕截图所示 现在在这个视图中,我有一个UILabel,它显示了从主表视图中选择的文本,最重要的是,我有一个UIButton添加到Favorit中。我希望当我单击它时保存当前UIlabel值,当我转到Favorit tableview时,我希望在那里显示此值。我尝试使用NSUserdefualt保存值,但它对我不起
现在在这个视图中,我有一个UILabel,它显示了从主表视图中选择的文本,最重要的是,我有一个UIButton添加到Favorit中。我希望当我单击它时保存当前UIlabel值,当我转到Favorit tableview时,我希望在那里显示此值。我尝试使用NSUserdefualt保存值,但它对我不起作用,因为它保存最后一个值而不保留前一个值的记录。这是我尝试的代码
-(IBAction)AddToF
{
NSString *str=lblText.text;
[[NSUserDefaults standardUserDefaults] setObject:str forKey:@"preferenceName"];
}
然后在Favurit tableview中,我得到这些值
- (void)viewWillAppear:(BOOL)animated
{
NSString *savedValue = [[NSUserDefaults standardUserDefaults]
stringForKey:@"preferenceName"];
[super viewWillAppear:animated];
}
请告诉我如何修复它。谢谢。将数组存储在userDefault中,而不是像下面这样的字符串 在
AppDelegate.h
文件中,只需声明变量
NSUserDefaults *userDefaults;
NSMutableArray *yourArray;
after...
在AppDelegate.m
中填写applicationdFinishLonching:
方法
userDefaults = [NSUserDefaults standardUserDefaults];
NSData *dataRepresentingtblArrayForSearch = [userDefaults objectForKey:@"yourArray"];
if (dataRepresentingtblArrayForSearch != nil) {
NSArray *oldSavedArray = [NSKeyedUnarchiver unarchiveObjectWithData:dataRepresentingtblArrayForSearch];
if (oldSavedArray != nil)
yourArray = [[NSMutableArray alloc] initWithArray:oldSavedArray];
else
yourArray = [[NSMutableArray alloc] init];
} else {
yourArray = [[NSMutableArray alloc] init];
}
[yourArray retain];
当您想在这个用户界面中插入数据时,请使用下面的代码
[appDelegate.yourArray addObject:yourDataString];///set your value or anything which you want to store here...
NSData *data=[NSKeyedArchiver archivedDataWithRootObject:appDelegate.yourArray];
[appDelegate.userDefaults setObject:data forKey:@"yourArray"];
[appDelegate.userDefaults synchronize];
当您想要创建AppDelegate
对象时,请使用下面的代码
AppDelegate *appDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];
我希望这能帮助您…将数组存储在userDefault中,而不是像下面这样的字符串 在
AppDelegate.h
文件中,只需声明变量
NSUserDefaults *userDefaults;
NSMutableArray *yourArray;
after...
在AppDelegate.m
中填写applicationdFinishLonching:
方法
userDefaults = [NSUserDefaults standardUserDefaults];
NSData *dataRepresentingtblArrayForSearch = [userDefaults objectForKey:@"yourArray"];
if (dataRepresentingtblArrayForSearch != nil) {
NSArray *oldSavedArray = [NSKeyedUnarchiver unarchiveObjectWithData:dataRepresentingtblArrayForSearch];
if (oldSavedArray != nil)
yourArray = [[NSMutableArray alloc] initWithArray:oldSavedArray];
else
yourArray = [[NSMutableArray alloc] init];
} else {
yourArray = [[NSMutableArray alloc] init];
}
[yourArray retain];
当您想在这个用户界面中插入数据时,请使用下面的代码
[appDelegate.yourArray addObject:yourDataString];///set your value or anything which you want to store here...
NSData *data=[NSKeyedArchiver archivedDataWithRootObject:appDelegate.yourArray];
[appDelegate.userDefaults setObject:data forKey:@"yourArray"];
[appDelegate.userDefaults synchronize];
当您想要创建AppDelegate
对象时,请使用下面的代码
AppDelegate *appDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];
我希望这能帮助你……告诉你3个简单的步骤 1-从保存的Plist文件中读取旧数据
NSString *filePath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];
NSMutableArray *array = [NSArray arrayWithContentsOfFile:filePath];
NSLog(@"fav List = %@", array);
2-现在使用添加新项目
[array addObject:someItem];
3-将数据保存在plist中
[array writeToFile:filePath atomically:YES];
只要告诉你3个简单的步骤 1-从保存的Plist文件中读取旧数据
NSString *filePath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];
NSMutableArray *array = [NSArray arrayWithContentsOfFile:filePath];
NSLog(@"fav List = %@", array);
2-现在使用添加新项目
[array addObject:someItem];
3-将数据保存在plist中
[array writeToFile:filePath atomically:YES];
感谢您的快速回答,但如何从中获取值。嘿,我看到我从userdefault从oldsavearray获取数据,与。。只要在需要获取数据的地方实现这个逻辑,并且只使用appDelegate.yourArray试试这个:)给我一个错误userDefaults undeclear[appDelegate.userDefaults setObject:data forKey:@“yourArray”];[appDelegate.userDefaults同步];在这些linesoky中,我通过设置其属性Senthize来修复这些错误。但有一个问题仍然存在:如何在Favorit tableview类中重新获取这些值。您属性对这两个变量进行了语法化??感谢您的快速回答,但如何从中重新获取值。嘿,我看到我从userdefault从oldsavearray获得的数据与。。只要在需要获取数据的地方实现这个逻辑,并且只使用appDelegate.yourArray试试这个:)给我一个错误userDefaults undeclear[appDelegate.userDefaults setObject:data forKey:@“yourArray”];[appDelegate.userDefaults同步];在这些linesoky中,我通过设置其属性Senthize来修复这些错误。但有一个问题仍然存在:如何在Favorit tableview类中返回这些值。是否对这两个变量进行语法化??