2

Windows でアプリに使用している仮想システム (VFS) を作成しました。今、アプリケーションを iOS に移動しましたが、dirrent に問題があります。

Windows ポートは、ファイルがある現在のフォルダーに関する情報を追加しました。

DIR * dir = opendir(dirName);
char * dirFullPath = dir->patt; //this is missing at iOS

どうすればその情報を入手できますか? DirName 変数は、唯一の相対パスであるため、役に立ちません。

次に、Windows では、フォルダーを VFS のルートとしてマップするように指定します。iOS で同じことを行うにはどうすればよいですか? たとえば、VFS をディレクトリ DATA にマップするとします。

4

2 に答える 2

1

NSSearchPathForDirectoriesInDomains() は低レベルの API であり、特別な理由で必要でない限り避けるべきです。代わりに、NSURL を使用する必要があります。これは Apple の公式の推奨事項です。

NSSearchPathForDirectoriesInDomains 関数は URLsForDirectory:inDomains: メソッドのように動作しますが、ディレクトリの場所を文字列ベースのパスとして返します。代わりに URLsForDirectory:inDomains: メソッドを使用する必要があります。

次のように使用されます。

NSURL *documentsURL = [[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask].lastObject;

NSURL オブジェクトはまさにあなたが望むことを行います。これは、ベース URL とその下の相対 URL を含むオブジェクトです。

クロス プラットフォームのアプリを作成している場合は、クロス プラットフォームではないすべてのもののラッパーを作成する必要があります。ファイル システム操作は、抽象化する必要があるものの 1 つです。NSURL と NSFileManager の周りに C++ ラッパーを記述し、そのラッパーが他のプラットフォームで別のものを使用するようにします。

NSURL は通常、文字列を使用するよりも高速でバグが少なく、RAM の使用量が少なくなります。多くの場合、低レベルのファイルシステム/セクター参照を使用します。

于 2013-08-25T08:40:52.797 に答える
0

ファイルシステムへの標準 iOS インターフェースを提供するため、`NSFileManager を参照してください。

https://developer.apple.com/library/ios/DOCUMENTATION/Cocoa/Reference/Foundation/Classes/NSFileManager_Class/Reference/Reference.html

また、このことを十分に理解する必要があります。

https://developer.apple.com/library/ios/documentation/FileManagement/Conceptual/FileSystemProgrammingGuide/FileSystemProgrammingGuide.pdf

(iOS セクションを参照)

于 2013-08-24T17:06:19.783 に答える