1

Xcode 4forosxにアプリケーションがあります。私のプログラムでは、plistファイルの読み取りと書き込みが必要な場所がいくつかあります。現在、/ users / my name / desktop / name ofdocumentplistのファイルパスを使用しています。ただし、当然、アプリケーションをアプリにして別のコンピューターに転送すると、ファイルを見つけて読み取ることができません。どのコンピュータでも機能するように、ファイルパスをどのように作成すればよいですか。以下は私が持っている私のファイルパスです

filepath = @"/Users/Gautambir/Desktop/CustomerNames.plist"
4

1 に答える 1

2

パスをハードコーディングしないでください。そのために利用可能なさまざまなAPIを使用してパスを構築する必要があります。

有効なパスを作成する方法はいくつかあります。たとえば、これは機能します。

NSString* filePath = [[NSHomeDirectory() stringByAppendingPathComponent:@"Desktop"] stringByAppendingPathComponent:@"CustomerNames.plist"];

または、次を使用することもできます。

NSString* filePath = [@"~/Desktop/CustomerNames.plist" stringByExpandingTildeInPath];

これらはパスを作成する正しい方法ですが、デスクトップ、ドキュメントフォルダー、アプリケーションサポートフォルダーなどの特別な場所にアクセスするには、NSSearchPathForDirectoriesInDomains()関数、できればNSFileManagerメソッドURLsForDirectory:inDomains:またはを使用する必要がありますURLForDirectory:inDomain:appropriateForURL:create:error:

これらのURLベースの方法は、パスベースの方法よりも常に優先される必要があります。Appleは、すべての開発者ができるだけ早くURLベースの方法をサポートするように移行することをお勧めします。

これは主に、ファイルのURLがブックマークデータを保存できるためです。ファイルが移動してもURLは解決できますが、パスは単なる文字列であり、メタデータを保存できないため、パスの場合はそうではありません。

ファイルマネージャを使用してURLを見つける方法は次のとおりです。

NSFileManager* fm = [NSFileManager defaultManager];
NSURL* desktopURL = [fm URLForDirectory:NSDesktopDirectory 
                            inDomain:NSUserDomainMask 
                   appropriateForURL:nil
                        shouldCreate:NO
                               error:nil];

NSURL* fileURL = [desktopURL URLByAppendingPathComponent:@"CustomerNames.plist"];
于 2012-04-19T07:54:23.507 に答える