パスをハードコーディングしないでください。そのために利用可能なさまざまな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"];