如何在Second Tableview中显示选定的plist数据?

时间:2012-12-21 09:34:52

标签: iphone xcode plist nsuserdefaults

在我的应用程序中我有两个Tableview,一个是我的主要Tableview,第二个是我的Favourit tableview。首先,当我点击mainTableview的任何一行时,我在mainView中显示我的所有plist数据它转到Next Class作为我的屏幕截图显示如下
                               enter image description here

现在在这个视图中我有一个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];
}

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

2 个答案:

答案 0 :(得分:1)

将数组存储在userDefault中,而不是像bellow那样存储...

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

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

AppDelegate.m方法中的applicationDidFinishLonching: Fille

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使用Bellow Code ...

中插入数据之后
[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];

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

答案 1 :(得分: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];