2017-04-14 37 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]; 
}