私のアプリケーションでは、CarbonファイルマネージャAPIを使用してフォルダのサイズを取得する必要があります(NSEnumeratorは遅く、NSTaskをシェルコマンドで使用するとさらに悪化します)。私は、Carbonフレームワークをインポートした、と私は、フォルダのサイズを取得するには、このメソッドを使用しています:NSStringからFSRefへの変換が機能しない
http://www.cocoabuilder.com/archive/message/cocoa/2005/5/20/136503
それは、引数としてのFSRefを使用し、私のパス文字列が現在NSStringのです。
FSRef f;
OSStatus os_status = FSPathMakeRef((const UInt8 *)[filePath fileSystemRepresentation], &f, NULL);
if (os_status != noErr) {
NSLog(@"fsref creation failed");
}
そして私は、フォルダサイズメソッドを呼び出し::私はのFSRefにNSStringのを変換するために、これを使用してみました
[self fastFolderSizeAtFSRef:f];
私が構築しようとすると、しかし、私は上記の行について、このエラーを取得します:
エラー:引数のいずれかの互換性のない型 'fastFolderSizeAtFSRef:'
任意の助けいただければ幸いです。ありがとう
こんにちはデイブ、 ありがとうございました。私はクラスに入れて、これを試しました: [自己convertNSStringToFSRef:ファイルパス]]; ここで、filePathはパスを含むNSStringです。そして、私は "警告 'AppController'が '-convertNSStringToFSRef'に応答しないことがあります。私はあなたの方法を間違った方法と呼んでいると感じています... ありがとう – indragie
ええ、私はCの関数として書いています。メソッドとして使いたい場合は、最初の行を ' - (FSRef)convertNSStringToFSRef:(NSString *)theString {'に変更してください。アンパサンドを忘れないで!このメソッドはFSRefを返します。上記のように、fastFolderSizeメソッドはFSRefポインタを要求します。私はもう少しの情報で私の答えを編集しています... –
ありがとうDave、私はそれらの2つの方法を私のアプリで使用する許可を得ることができますか? NSFileManager + FileSize.mのものS.私のアプリはフリーウェアです(おそらくオープンソース):) – indragie