2017-04-14 12 views
0

"setObject"がこのfor..loopに 'Save'をインクリメントするようにカウンタを組み込む方法がわかりません。dropbox V2 DBFILES forループが増加しないためのループ

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.Solution

ちょうど以下のように、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]; 
} 
関連する問題