我得到了以下的帖子:
这个plist存储一个数组,该数组将被加载到UITableview中,如右图所示。
我使用以下代码检索此内容:
NSString *path = [[NSBundle mainBundle] pathForResource:@"array" ofType:@"plist"];
vakken = [[NSDictionary alloc] initWithContentsOfFile:path];
naamvakken = [vakken objectForKey:@"Vakken"];
self.array = [naamvakken mutableCopy];
现在我将此UIAlertview与此Textfield内置功能一起使用,让用户创建一个新行:
http://f.cl.ly/items/030Z373X2p1c3m0O0u2K/Schermafbeelding%202013-01-21%20om%2019.48.06.png 使用此代码:
NSString *path = [[NSBundle mainBundle] pathForResource:@"array" ofType:@"plist"];
NSString *list = [[alertView textFieldAtIndex:0]text];
naamvakken = [vakken objectForKey:@"Vakken"];
[array addObject:list];
[array writeToFile:path atomically:YES];
[self.tableView reloadData];
但由于某种原因,上面的代码将文本存储在TableView中,但不存储在plist中。我的代码有问题吗? [array writeToFile:path atomically:YES];
应该做什么?
另一个问题是如果用户在tableviewcell上向右滑动,如何从plist中删除字符串。
我的.h
@interface ViewController : UITableViewController <UITableViewDataSource, UITableViewDelegate> {
IBOutlet UIView *root;
}
@property (nonatomic, retain) NSMutableArray *array;
@property (nonatomic, retain) NSDictionary *vakken;
@property (nonatomic, retain) NSMutableArray *naamvakken;
@property (strong, nonatomic) NSIndexPath *indexPathToBeDeleted;
@end
for:H2CO3:
-(NSString *)docsDir {
return [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)objectAtIndex:0];
}
并在viewdidload中:
listPath = [[self docsDir]stringByAppendingPathComponent:@"array.plist"];
谢谢!
答案 0 :(得分:1)
每天都有一个关于这个问题的问题出现在StackOverflow上。问题出在这里:
NSString *path = [[NSBundle mainBundle] pathForResource:@"array" ofType:@"plist"];
您无法写入应用程序包(出于非常明显的安全原因)。如果要更新plist,请将其写入可写路径,例如Documents目录。