从第二个数组更新自定义类对象的数组

时间:2012-06-21 04:11:00

标签: iphone objective-c nsmutablearray

我有一个自定义类对象的数组(项)(catalogItem)每个catalogItem都有各种属性,其中一个是一个名为caption的母带处理

我正在尝试更新第二个数组中的nsstrings中的items数组中每个catalogItem中的catalogItem.caption(tempCaption)

我知道迭代数组但我似乎无法正确获取语法,因为我似乎正在做的是每个catalogItem.caption循环遍历tempCaption数组中的每个nsstring。所以它迭代了49次而不是它应该的7次。 catalogItem.caption最终都是tempCaption数组中的最后一项。

ViewController.m

-(void)parseUpdateCaptions
{
NSMutableArray *tempCaptions = [NSMutableArray array];
//get server objects
PFQuery *query = [PFQuery queryWithClassName:@"UserPhoto"];
NSArray* parseArray = [query findObjects];
    //fast enum and grab strings and put into tempCaption array
       for (PFObject *parseObject in parseArray) {
        [tempCaptions addObject:[parseObject objectForKey:@"caption"]];
    }


//fast enum through each array and put the capString into the catalogItem.caption slot
//this iterates too much, putting each string into each class object 7 times instead of just putting the nsstring at index 0 in the temCaption array into the catalogItem.caption at index 0, etc. (7 catalogItem objects in total in items array, and 7 nsstrings in tempCaption array)
for (catalogItem in items) {
    for (NSString *capString in tempCaptions) {
            catalogItem.caption = capString;
            DLog(@"catalog: %@",catalogItem.caption);
        }
}

}

如果需要 - 类对象header.h

#import <Foundation/Foundation.h>

@interface BBCatalogClass : NSObject


@property (nonatomic, strong) NSData *image;
@property (nonatomic, strong) NSData *carouselImage;
@property (nonatomic, strong) NSString *objectID;
@property (nonatomic, strong) NSString *caption;
@end

2 个答案:

答案 0 :(得分:1)

我会尝试传统的循环而不是快速枚举。如果我理解正确的话,这将是,两个数组的索引是对齐的。

for(int i = 0; i<items.count; i++) {
  catalogItem = [items objectAtIndex:i]; 
  catalogItem.caption = [tempCaptions objectAtIndex:i];
}

答案 1 :(得分:0)

您正在使用嵌套for循环进行迭代。这意味着总迭代次数将是(items.count * tempCaptions.count)。

所以,要么你应该在一个循环中快速迭代,要么你应该采用上面建议的传统方法。