我有一个自定义类对象的数组(项)(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
答案 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)。
所以,要么你应该在一个循环中快速迭代,要么你应该采用上面建议的传统方法。