我有这个plist,在我的主目录中名为sleeps.plist
。看起来像
我想把它的内容放到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);
它记录到达点,然后为空...所以我不确定我做错了什么。此外,该表是空的。有人能指出我正确的方向吗?
答案 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文件夹。