2012-04-14 8 views
1

私はプログラムでCocoaでフォルダを作成しようとしています。Cocoaでフォルダ(バンドル)を作成する

私はNSStringカテゴリを書いているし、我々はそこに以下の機能を持っている:いくつかの言葉で、

- (void)createAsFolder 
{ 
    NSFileManager *fileManager = [NSFileManager defaultManager]; 
    NSError* err = nil; 

    [fileManager createDirectoryAtPath:self withIntermediateDirectories:YES attributes:nil error:&err]; 

    if (err) 
    { 
     NSLog(@"ERROR : %@",err); 
    } 
} 

それでは、私たちはNSString* path = @"/some/path/is/here";を持っているとしましょう、私たちはするだけで、それを作成することができます。

[path createAsFolder]; 

事は(つまり:拡張子を持つ)、それは通常のフォルダのために完璧に動作しますが、指定したパスがバンドルされたとき、それはしない、です。など。

上記は機能しません。

これを修正する方法はありますか?

+0

あなたはエラーをしますか? –

+0

@EvanMulawskiいいえ、まったくエラーはありません(そして絶対にバンドルされていないフォルダもあります)。私はロギングを通じてすべてのパスをチェックしました - それは正しいです。私は基本的に、ある場所から別の場所にファイルツリー構造全体をコピーしています。バンドル(とその内容)を除いて、すべてが素晴らしいコピーです。 –

答えて

1

代わりにNSFileWrapperを試してください。私はそれがあなたがしたいことをすることができると思います。いいえ、それは絶対にあります

NSFileWrapper* w = [[NSFileWrapper alloc] initWithPath:initialPath]; 

[w writeToFile:destinationPath atomically:YES updateFilenames:YES]; 

をうんと:

https://developer.apple.com/library/mac/#documentation/Cocoa/Reference/ApplicationKit/Classes/NSFileWrapper_Class/Reference/Reference.html

+0

私はNSFileWrapperを10回勉強し、解決策としてそれを却下しました。再確認するように言って、私に再考させました...はい、あなたは100%正しいです。私はディレクトリ木のために一つの関数を書いています。一つはファイルをコピーするためのものです。一つはフォルダを作成するためのものです(パッケージ/バンドルを見つけたので完全には機能しませんでした)。そして、ツリー全体をトラバースし、これはすべて2つの厄介な行でやり遂げることができました...時々私はちょっとばかばかしいと感じます...ありがとう、バディ! :-) –

+0

それは本当に暗闇の中でのショットでした。私は数日前にドキュメントベースのアプリケーション設計を勉強するときにそれについて読んで、それがうまくいくと思っていただけです;) – thundersteele

+0

良い...撃たれました! lol ;-) –

2

OKは、ここにあなたが別の場所でから完全なファイルツリーをコピーしたい場合は、(おかげで@thundersteeleする)の答えですサブフォルダがパッケージ/バンドルなのかどうかにかかわらず問題です。それほど難しくないのですか?ちょうど2行...笑

+1

このメソッドはOS X v10.6では償却されていますので、代わりにwriteToURL:options:originalContentsURL:error:を使用してください。 – rdelmar