0

カスタム クラス オブジェクト (catalogItem) の配列 (項目) があります。各 catalogItem にはさまざまなプロパティがあり、そのうちの 1 つはキャプションと呼ばれるマスタリングです。

2 番目の配列 (tempCaption) の nsstrings から、items 配列の各 catalogItem でこの catalogItem.caption を更新しようとしています。

私は配列を反復処理することを知っていますが、私がやっているように見えるのは、各catalogItem.captionがtempCaption配列の各nsstringを循環しているため、正しい構文を取得できないようです。そのため、7 回ではなく 49 回反復します。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
4

2 に答える 2

1

高速な列挙ではなく、伝統的なループを試してみます。2 つの配列のインデックスが整列されていることを正しく理解している場合、これは機能します。

for(int i = 0; i<items.count; i++) {
  catalogItem = [items objectAtIndex:i]; 
  catalogItem.caption = [tempCaptions objectAtIndex:i];
}
于 2012-06-21T04:18:43.440 に答える
0

ネストされた for ループを繰り返しています。これは、反復回数の合計が (items.count * tempCaptions.count) になることを意味します。

したがって、単一のループで両方を高速に反復するか、上記で提案した従来のアプローチを使用する必要があります。

于 2012-06-21T04:37:09.873 に答える