0

バンドルに保存されている plist に name と num を保存しようとしていますが、適切に保存されていますが、アプリケーションを再度実行すると、plist に保存された以前のデータを取得できないという問題があります。

ここに、sample.plist という名前の plist のコード、2 つの texfields name、number があります。

-(void)viewdidload
{
    [super viewdidload];
    self.path=[[NSBundle mainBundle] pathForResource:@"sample" ofType:@"plist"];
    self.dictionary=[[NSMutabledictionary alloc] initWithContentsOfFile:self.path];
}

-(IBAction)save
{
    if(self.dictionary==nil) {
        self.dictionary=[[NSMutabledictionary alloc] 
        initWithObjectsAndKeys:self.name.text,self.number.text,nil];
    } else {
        self.dictionary=[NSMutabledictionary  dictionaryWithContentsofFile:self.path];
        [self.dictionary setobject:self.name.text forKey:self.number.text];
    }

    [self.dictionary writetofile:self.path];
}
4

2 に答える 2

0

同様の問題があり、おそらくこの解決策が役立つ可能性があります。xcode で plist ファイルを作成してデバイスにプッシュするのではなく、ドキュメント ディレクトリに新しいファイルを書き込みます。

NSArray *path = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentDirectory = [path objectAtIndex:0];
self.filePath = [documentDirectory stringByAppendingPathComponent:@"sample.plist"];
[self.dictionary writeToFile:self.filePath atomically:YES];

@Anupdas が指摘するように、バンドル内の plist は読み取り専用です。

于 2013-05-31T15:53:35.750 に答える