0

問題があります。Documents サブディレクトリの内容を Documents ディレクトリの「ルート」に移動する必要があります。これを行うには、サブディレクトリのすべての内容を Documents ディレクトリにコピーしてから、サブディレクトリを削除することを考えました。

NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *documentinbox = [documentsDirectory stringByAppendingPathComponent:@"inbox"]

これは、Documents ディレクトリのパスと、inbox という名前のサブディレクトリのパスを取得する方法です。

 NSArray *inboxContents = [[NSFileManager defaultManager] contentsOfDirectoryAtPath:documentinbox error:nil];
NSFileManager *fileManager = [NSFileManager defaultManager];

次に、サブフォルダー内のすべてのドキュメントを含む配列を作成し、ファイル マネージャーを初期化します。

ここで、ドキュメントごとにサブディレクトリからドキュメント ディレクトリにドキュメントをコピーする for サイクルを実装する必要があります。

for(int i=0;i<[inboxContents count];i++){
  //here there is the problem, I don't know how to copy each file

moveItemAtPathというメソッドを使いたいのですが、各ファイルのパスを取得する方法がわかりません。

あなたが私の問題を理解してくれることを願っています, 助けてくれてありがとうNicco

4

1 に答える 1

2

次のように使用できmoveItemAtPath:toPath:error:ます。

NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *documentinbox = [documentsDirectory stringByAppendingPathComponent:@"inbox"];

//Initialize fileManager first
NSFileManager *fileManager = [NSFileManager defaultManager];

//You should always check for errors
NSError *error;
NSArray *inboxContents = [fileManager contentsOfDirectoryAtPath:documentinbox error:&error];
//TODO: error handling if inboxContents is nil

for(NSString *source in inboxContents)
{
    //Create the path for the destination by appending the file name
    NSString *dest = [documentsDirectory stringByAppendingPathComponent:
                      [source lastPathComponent]];

    if(![fileManager moveItemAtPath:source
                            toPath:dest
                             error:&error])
    {
        //TODO: Handle error
        NSLog(@"Error: %@", error);
    }
}
于 2012-07-25T16:56:20.153 に答える