1

在我的应用程序中,我有两个 Tableview,一个是我的主 Tableview,第二个是我的 Favourit tableview。首先,当我单击 MainTableview 的任何行时,我会在 mainView 中显示我的所有 plist 数据,它会在我的屏幕截图中显示为 Next Class以下
在此处输入图像描述

现在在这个视图中,我有一个 UILabel,它显示了我从主 Tableview 中选择的文本,最重要的是我有 UIButton 添加到收藏夹。我希望当我单击它时保存当前 UIlabel 值,当我转到 favourit 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];
}

有人可以指导我如何解决它。谢谢。

4

2 回答 2

1

将数组存储在 userDefault 中,而不是像下面这样的字符串。

AppDelegate.h文件中只声明变量...

NSUserDefaults  *userDefaults;
NSMutableArray *yourArray;
after...

AppDelegate.m填入applicationDidFinishLonching:法_

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];

当您想在此 UserDefaults 中插入数据后使用波纹管代码...

[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];

我希望这可以帮助你...

于 2012-12-21T09:41:25.297 回答
0

只需告诉您简单的 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];
于 2012-12-21T11:21:26.297 回答