2017-04-14 92 views
0

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

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]; 
    } 

回答

0

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

1.Solutions

NSMutableArray *NewArray = [NSMutableArray new]; 

的NSMutableDictionary *字典= [的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]; 
}