-1

我得到了以下plist:

在此处输入图像描述

这个 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

对于: H2CO3:

-(NSString *)docsDir {

    return [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)objectAtIndex:0];

}

并在 viewdidload 中:

listPath = [[self docsDir]stringByAppendingPathComponent:@"array.plist"];

谢谢!

4

1 回答 1

1

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

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

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

于 2013-01-21T19:02:22.807 回答