Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/36.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xcode/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 如何在第二个Tableview中显示选定的plist数据?_Iphone_Xcode_Plist_Nsuserdefaults - Fatal编程技术网

Iphone 如何在第二个Tableview中显示选定的plist数据?

Iphone 如何在第二个Tableview中显示选定的plist数据?,iphone,xcode,plist,nsuserdefaults,Iphone,Xcode,Plist,Nsuserdefaults,在我的应用程序中,我有两个表视图,一个是我的主表视图,另一个是我最喜欢的表视图。首先,我在主视图中显示我的所有plist数据,当我单击主表视图的任何一行时,它将转到下一个类,如下面的屏幕截图所示 现在在这个视图中,我有一个UILabel,它显示了从主表视图中选择的文本,最重要的是,我有一个UIButton添加到Favorit中。我希望当我单击它时保存当前UIlabel值,当我转到Favorit tableview时,我希望在那里显示此值。我尝试使用NSUserdefualt保存值,但它对我不起

在我的应用程序中,我有两个表视图,一个是我的主表视图,另一个是我最喜欢的表视图。首先,我在主视图中显示我的所有plist数据,当我单击主表视图的任何一行时,它将转到下一个类,如下面的屏幕截图所示

现在在这个视图中,我有一个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类中返回这些值。是否对这两个变量进行语法化??