-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];トリックを行う必要がありますか?

別の質問は、ユーザーがテーブルビューセルを右にスワイプした場合に、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];

}

およびビューでdidload:

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 に答える