1

これに関するstackoverflowに関する多くの質問を読み、最初の実行時にplistファイルをバンドルからドキュメントディレクトリにコピーすることを確認しました。しかし、この plist ファイルに書き込もうとすると、うまく書き込めません。

NSArray *path = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask,YES);
NSString *documentsDirectory = [path objectAtIndex:0];
NSString *filePath = [documentsDirectory stringByAppendingPathComponent:@"inAppList.plist"];
[infoDict setObject:[NSNumber numberWithInt:1] forKey:@"someKey"];
didWrite = [infoDict writeToFile:filePath atomically:YES];

didWrite は「いいえ」になります。

オーガナイザーとデバイスのタブで確認できるので、plist ファイルがドキュメント ディレクトリにコピーされていることは確かです。また、ドキュメント ディレクトリからファイルを正常に読み取ることができます。

ほんの少しの間違いかもしれませんが、何が悪いのか本当にわかりません。

4

2 に答える 2

1
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);

NSString *documentsDirectory = [paths objectAtIndex:0]; 

plistpath = [[NSString alloc] initWithString:[documentsDirectory stringByAppendingPathComponent:@"Product.plist"]];

その後

[array writeToFile:path atomically:YES]; 

[Whatever [Array or Dictionary] you want to Write in Plist]

それでも plist が作成されない場合は、配列または辞書が空でなければならないかどうかを確認してください。

もう 1 つ: plist に null 値を挿入していないことを確認してください。あなたがそれをしようとすると....そして、plistを作成することもできません。

于 2012-08-04T13:07:37.673 に答える
1

コードと同様に、コードは次のようになります。

// get plist file path
NSArray *path = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask,YES);
NSString *documentsDirectory = [path objectAtIndex:0];
NSString *filePath = [documentsDirectory stringByAppendingPathComponent:@"inAppList.plist"];

// set '1' forKey "somebody"
NSArray *objectArray = [[NSArray alloc] initWithObjects:[NSNumber numberWithInt:1],nil];
NSArray *keyArray = [[NSArray alloc] initWithObjects:@"someKey",nil];
NSDictionary *infodict = [[NSDictionary alloc] initWithObjects:objectArray forKeys:keyArray];

// write dictionary to file
BOOL didWrite = [infodict writeToFile:filePath atomically:YES];
于 2012-08-04T13:22:39.143 に答える