将数据写入plist for tablelview

时间:2013-01-21 18:55:26

标签: iphone objective-c cocoa-touch

我得到了以下的帖子:

enter image description here

这个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"];

谢谢!

1 个答案:

答案 0 :(得分:1)

每天都有一个关于这个问题的问题出现在StackOverflow上。问题出在这里:

NSString *path = [[NSBundle mainBundle] pathForResource:@"array" ofType:@"plist"];

您无法写入应用程序包(出于非常明显的安全原因)。如果要更新plist,请将其写入可写路径,例如Documents目录。