用于循环的 dropbox V2 DBFILESmetadata 不递增

Posted

技术标签:

【中文标题】用于循环的 dropbox V2 DBFILESmetadata 不递增【英文标题】:dropbox V2 DBFILESmetadata for loop not incrementating 【发布时间】:2017-04-14 00:00:51 【问题描述】:

我很难弄清楚如何合并一个计数器,所以“setObject”在这个 for..loop 中增加了它的“保存”。

   NSMutableArray *NewArray = [NSMutableArray new];
   NSMutableDictionary *dict = [NSMutableDictionary dictionary];


     for ( DBFILESMetadata *entry in result.entries) 

        [dict setObject:entry.pathDisplay forKey:@"pathDisplay"];

        [dict setObject:entry.name forKey:@"name"];

        [NewArray addObject:dict];

     

我确定这是一个简单的答案,最后一行只是保存 result.entries 的最后一项。 NewArray 具有正确的项目数,但数组中的每个项目都是 result.entries 的最后一项:

2017-04-13 16:47:58.876 Sites[11145:688352] NewArray (
     
     name = 229;
     pathDisplay = "/Sites/229";
     ,
     
     name = 229;
     pathDisplay = "/Sites/229";
    
  ).

我需要添加某种类型的计数器来设置下一个对象,只是对它应该去哪里感到困惑。

提前致谢。

我想通了:

  for ( DBFILESMetadata *entry in result.entries) 

        [imagePaths addObject:entry.pathDisplay];
        [names addObject:entry.name];
     

     for(int i=0; i<[result.entries count]; i++) 
         dict = @@"name": names[i], @"pathDisplay": imagePaths[i];
         [allObjects addObject:dict];
     

【问题讨论】:

【参考方案1】:

字典项键必须不同。否则,您总是会看到最后设置的项目。因为当保存相同的键时字典会覆盖。所以你可以像下面这样使用。

1.解决方案

NSMutableArray *NewArray = [NSMutableArray new];

NSMutableDictionary *dict = [NSMutableDictionary 字典];

 int i = 0;
 for ( DBFILESMetadata *entry in result.entries) 
   
    [dict setObject:entry.pathDisplay forKey:[NSString stringWithFormat:@"pathDisplay%d",i]];

    [dict setObject:entry.name forKey:[NSString stringWithFormat:@"name%d",i]];

    [NewArray addObject:dict];
     i++;

 

2.解决方案

创建一个包含 json 属性的类,如下所示。

HoldJsonDataClass.h
    @interface HoldJsonDataClass : JsonData
    @property (nonatomic,retain) NSString *name;
    @property (nonatomic,retain) NSString * pathDisplay;
    @end

HoldJsonDataClass.m    
    @implementation HoldJsonDataClass
    
    @end

然后将类填充到数组中。这个解决方案更清晰。

    for ( DBFILESMetadata *entry in result.entries) 

    HoldJsonDataClass *holdJsonClass = [HoldJsonDataClass new];
    holdJsonClass.name = entry.name;
    holdJsonClass.pathDisplay = entry.pathDisplay;
    [NewArray addObject:holdJsonClass];
 

【讨论】:

以上是关于用于循环的 dropbox V2 DBFILESmetadata 不递增的主要内容,如果未能解决你的问题,请参考以下文章