【发布时间】:2015-05-10 12:26:32
【问题描述】:
我正在遍历用户的 Dropbox 内容(使用加载的MetaData 委托),以获取有关用户 Dropbox 中存在的所有文件和文件夹名称的信息(我需要这个,以便将所有必要的数据下载到 Documents 文件夹的应用程序供离线使用)。信息应存储在 NSMutabledirectionary 中,其中“key = 文件夹名称”,并且对象始终是包含文件夹内所有文件的数组。我正在这样做:
-(void)restClient:(DBRestClient *)client loadedMetadata:(DBMetadata *)metadata
{
if (metadata.isDirectory) {
//subfolders are loaded into array
for (DBMetadata *directory in metadata.contents) {
if (directory.isDirectory)
{
[directoryList addObject:directory.filename];
//
}
}
//files are loaded according loadmeta-folder (first run is root folder)
[fileList removeAllObjects];
for (DBMetadata *file in metadata.contents) {
if (!file.isDirectory)
{
NSLog(@"Directy is called %@", metadata.path);
//NSLog(@"%@ was last changed %@", file.filename, file.lastModifiedDate);
[fileList addObject:file.filename];
[fileRevisionDates addObject:file.lastModifiedDate];
}
}
NSLog(@"Key is called %@", metadata.path);
//This is where I store the information in the dictionary
[subFolderContent setValue:fileList forKey:metadata.path];
//loadmetadata for all sub-folders
for (int i = 0; i < directoryList.count; i++) {
[restClient loadMetadata:[NSString stringWithFormat:@"/TestFolder/%@/", [directoryList objectAtIndex:i]]];
}
}
}
现在这基本上可以工作了,但是当然,每次更新数组“fileList”时,字典中每个键的所有值都会相应更新......我错过了什么?还是有更好的方法来实现这一点?
感谢您的帮助! 汤姆
【问题讨论】:
-
显然,您只能创建一个
fileList。字典包含对对象的引用。如果你想要唯一的值,你需要唯一的对象。 -
嘿,我看到了我的问题,但我想知道如何创建唯一对象:如果我事先不知道每个不同用户需要多少变量,我就无法分配变量。 .. 你知道我的意思吗?
-
根据需要分配它们。不需要全局指针——只需在本地分配,放入字典,然后就可以完成了。
-
抱歉,我很抱歉,您能否提供一个快速的代码示例?这正是我的问题......数组需要一个名称,对吧(NsArray *fileListx = etc)?但是如何动态分配 fileList1、fileList2、fileList3(100 个文件夹意味着 fileList99...)。认为我在这里遗漏了一些重要的东西 ;-) 谢谢!
-
iOS 对象没有名称。指针有名字,而不是它们指向的东西。这是基本的面向对象编程的东西,在你开始使用 Objective-C 之前你应该先冷静下来。
标签: ios dropbox-api