我有一个远程目录,在Dropbox上有几个子目录和文件。
偏远方:
-Mobile Profiles *(root)*
-- Custom Profiles
--- Profile1
--- Profile2
--- Profile3
使用文件上传文件和目录/子目录不是问题。在将子目录及其内容从dropbox下载到设备时,我正在做大脑放屁。
-(void)backupCustomProfiles {
for ( NSString *file in [[NSFileManager defaultManager] contentsOfDirectoryAtPath:MP_CUSTOM error:&error] ) {
[self.restClient uploadFile:file toPath:@"/Mobile Profiles/Custom Profiles/" fromPath:EasyStrings(MP_CUSTOM,file)];
}
}
-(void)restoreCustomProfiles {
for ( ) {
/* ? */
}
}
我不知道如何遍历远程端的子目录。
答案 0 :(得分:5)
首先加载目录元数据,然后加载它引用的文件。
要限制并行提取的数量,请对所有loadMetadata和loadFile调用使用NSOperationQueue来限制并行提取的数量。为避免冗余文件下载,请记住plist中下载的元数据。
- (void) restoreCustomProfiles
{
[self.client loadMetadata:@"/Mobile Profiles/Custom Profiles" withHash:hash];
}
- (void) restClient:(DBRestClient*)client loadedMetadata:(DBMetadata*)metadata
{
for (DBMetadata* child in metadata.contents) {
NSString *path = [child.path lowercaseString];
if (child.isDirectory) {
[client loadMetadata:child.path withHash:hash];
} else {
[client loadFile:pathToDownload intoPath:[
self.directory stringByAppendingString:path]];
}
}
}
- (void) restClient:(DBRestClient*)client loadedFile:(NSString*)destPath
{
// successfully downloaded a file to destPath
}