3

したがって、私が知りたいのは、アプリケーションが初めて実行されたときに plist をバンドルからドキュメント フォルダーに移動する方法だけです。やり方が分からないので、助けてください。

4

3 に答える 3

4

あなたのplist名が「友達」の場合

以下のコードを使用するだけです(ファイルが存在するかどうかを検出してコピーします)

NSFileManager *fileManger=[NSFileManager defaultManager];
NSError *error;
NSArray *pathsArray = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask,YES);

NSString *doumentDirectoryPath=[pathsArray objectAtIndex:0];

NSString *destinationPath= [doumentDirectoryPath stringByAppendingPathComponent:@"friends.plist"];

NSLog(@"plist path %@",destinationPath);    
if ([fileManger fileExistsAtPath:destinationPath]){
    //NSLog(@"database localtion %@",destinationPath);
    return;
}
NSString *sourcePath=[[[NSBundle mainBundle] resourcePath]stringByAppendingPathComponent:@"friends.plist:];

[fileManger copyItemAtPath:sourcePath toPath:destinationPath error:&error];

これにより、plistがリソースからドキュメントディレクトリにコピーされます

于 2012-04-27T16:43:25.373 に答える
2

この関数でうまくいくはずです。

- (void)copyPlist {
    NSString *plistPath = [[NSBundle mainBundle] pathForResource:@"myplist" ofType:@"plist"];

    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    NSString *documentsDirectory = [paths objectAtIndex:0];

    [[NSFileManager defaultManager] copyItemAtPath:plistPath toPath:documentsDirectory error:nil];
}

行でNSError引数を使用する必要はありませんが[[NSFileManager defaultManager] copyItemAtPath:plistPath toPath:documentsDirectory error:nil];、デバッグには役立つ場合があります。

于 2012-04-27T16:42:49.383 に答える
0

ちょっと注意してください...これはhttp://samsoff.es/posts/iphone-plist-tutorialからのものです"JSONパーサーは速度が大幅に向上したため、最近ではJSONを使用することがPlistよりも非常に好まれています。実際にはより高速です今はバイナリ plist よりも (これはナッツです). とにかく、お願いします.API に plist を使用しないでください.それらの生成は遅く、信頼性がありません.JSON を使用する必要があります.ピリオド."

于 2012-04-27T16:38:40.867 に答える