启动之间在UITableView中持久化数据的Plist

时间:2014-04-21 22:12:34

标签: ios objective-c uitableview plist

我有这个plist,在我的主目录中名为sleeps.plist。看起来像 enter image description here

我想把它的内容放到UITableView中......所以我将ViewController子类化为TableView,并将其设置为数据源和委托。

我已经做好了NSArray'睡觉的任何事情。被添加到表中(使用静态数据测试)。

现在,我希望能够从此plist添加数据,以便数据(如果用户输入更多)在启动之间保持持久。

这是我在viewDidLoad子类的ViewController中放入的代码。

NSString *path = [[NSBundle mainBundle] pathForResource:@"sleeps" ofType:@"plist"];
NSDictionary *myDict = [[NSDictionary alloc] initWithContentsOfFile:path];

NSArray *myArray = [myDict objectForKey:@"Root"];
sleeps = [myArray copy]; //sleeps is an NSArray declared right after the @implementation line

NSLog(@"reached point");

NSLog(@"%@", sleeps);

它记录到达点,然后为空...所以我不确定我做错了什么。此外,该表是空的。有人能指出我正确的方向吗?

2 个答案:

答案 0 :(得分:1)

“Root”作为键并不存在,你有一个包含字典数组的plist,你只需要:

sleeps = [[NSArray alloc] initWithContentsOfFile:path];

答案 1 :(得分:1)

由于plist root是一个数组而不是字典,因此您的代码应为:

NSString *path = [[NSBundle mainBundle] pathForResource:@"sleeps" ofType:@"plist"];
NSArray *myArray = [[NSArray alloc] initWithContentsOfFile:path];

sleeps = [myArray copy]; //sleeps is an NSArray declared right after the @implementation line

NSLog(@"reached point");

NSLog(@"%@", sleeps);

如果您希望用户能够添加值,则sleeps应为NSMutableArray,您应该致电[myArray mutableCopy]

但是如果你想要保留附加数据,那么你需要将数组写入可写文件夹,例如Documents文件夹。