Загрузка значений в массив из двух разных массивов iphone SDK - PullRequest
0 голосов
/ 23 сентября 2011

У меня возникла ситуация, я использую следующий код:

int x=0;
for (int i=0; i<=[arrayDeals count]-1; i++) {
    x++;
    //NSString *deal = [arrayDeals objectAtIndex:i];
    combinedArr = [[NSMutableArray alloc]initWithObjects:
                    [CustomObject customObjectWithName:[arrayDeals objectAtIndex:i] andNumber:x],nil];
}

Мне нужно загрузить значения из arrayDeals и значение 'x' в combArr. Итак, я положил это в цикл. Но я получил только одно значение из каждого массива. Что здесь пошло не так? Пожалуйста, помогите мне. (здесь CustomObject является NSObject) Спасибо.

1 Ответ

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

Ну, есть много вещей, которые не так с кодом, который вы разместили, но я думаю, это то, что вы хотите:

int x = 0;

NSMutableArray *combinedArr = [[NSMutableArray alloc] init]:
NSInteger count = [arrayDeals count];
for (int i = 0; i < count; i++) {
    x++;
     CustomObject *customObject =  [CustomObject customObjectWithName:[arrayDeals objectAtIndex:i] andNumber:x];

   [combinedArr addObject:customObject];
}

Чтобы дать вам представление о том, что не так с кодом, который вы разместили:

combinedArr = [[NSMutableArray alloc]initWithObjects:
                    [CustomObject customObjectWithName:[arrayDeals objectAtIndex:i] andNumber:x],nil];

Здесь вы создаете новый NSMutableArray, которому вы назначаете новый объект для извлечения объекта из массива arrayDeals. Но вы создаете NSMutableArray для каждого элемента в массиве arrayDeals и назначаете их одной и той же переменной.

Так что каждую итерацию вы пропускаете NSMutableArray.

Также:

for (int i=0; i<=[arrayDeals count]-1; i++) {

совпадает с

 for (int i=0; i < [arrayDeals count]; i++) {

но счетчик вызывается каждый раз, когда вы выполняете итерацию, поэтому в моем примере я сохранил счетчик в int, чтобы просто ускорить процесс.


Вы можете даже ускорить код с помощью быстрого перечисления:

NSInteger x = 0;    
NSMutableArray *combinedArr = [[NSMutableArray alloc] init]:

for (id object in arrayDeals) {
    id secondObject = [secondArray itemAtIndex:x];
    // Arrays start at 0 so only up it after we've got the object.
    x++;
     CustomObject *customObject =  [CustomObject customObjectWithName:object andNumber:x];

   [combinedArr addObject:customObject];
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...