iphone: addObjectsFromArray не добавляется после повторной инициализации массива nsmutable - PullRequest
1 голос
/ 22 сентября 2011

у меня есть следующий код

    inAppKeys = [[MKStoreManager sharedManager]  purchasableObjectsDescription ];
NSMutableArray * unremovableArray = [[NSMutableArray alloc] init];   
for(int i = 0; i<[inAppKeys count]; i++){
    for (int j=0; j< [categories count]; j++) {
        NSString * inAppKey =  [[categories objectAtIndex:j] valueForKey:@"inAppKey"];
        if([inAppKey isEqualToString: [inAppKeys objectAtIndex:i]]){
        [unremovableArray addObject:[categories objectAtIndex:j]];
        }
    }  
}


categories = [[NSMutableArray alloc] init];
[categories addObjectsFromArray:unremovableArray];

, где категории - это nsmutablearray ... дело в том, что addObjectsFromArray оставляет категории пустыми ... что я делаю неправильно?

1 Ответ

2 голосов
/ 22 сентября 2011

Похоже, вы обращаетесь к [количествам категорий] и [категориям objectAtIndex: j] еще до того, как вы выделяете / инициализируете категории.

Перечитав название («повторная инициализация»), которое предполагает, что вы ранее проинициализировали категории, я теперь предполагаю, что у вас есть основной набор категорий, которые вы пытаетесь свести к фактически приобретенным категориям. Если это так, я бы не стал повторно использовать переменную «категории», поскольку это сбивает с толку. (Я предполагаю, что категории были автоматически выпущены, или у вас есть утечка). Как насчет использования unremovableArray вместо его утечки?

Я бы также использовал быстрые счетчики для ясности и скорости ...

NSLog(@"categories: %@", categories);
inAppKeys = [[MKStoreManager sharedManager]  purchasableObjectsDescription ];
NSLog(@"inAppKeys:%@", inAppKeys);

NSMutableArray * unremovableCategories = [[NSMutableArray alloc] init];   
for(NSString* thisAppKey in inAppKeys) {
    for (NSDictionary* thisCategory in categories) {
        if ([[thisCategory valueForKey:@"inAppKey"] isEqualToString: thisAppKey]){
            [unremovableCategories addObject:thisCategory];
            break;  //having added this category; no reason to continue looking at it
        }
    }  
}

//now use unremovableCategories...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...