2010-08-19 2 views
0

Привет у меня есть этот массив, который сравнивает два массива, чтобы увидеть, если он содержит объект, однако после тестирования его с NSLogмассива ошибка сортировки по неизвестной причине

NSLog (@"1"); 
favoritesArray = [[NSMutableArray alloc] init]; 
NSLog (@"2"); 
//Add items 
// favoritesArray = [[NSMutableArray alloc]init]; 

didContain = [[NSMutableArray alloc]init]; 
NSLog (@"3"); 

if ([favoritesArray containsObject:@"one"]) 
{ 
    [didContain addObject:@"one"]; 
    NSLog (@"4"); 
} 

4-го журнала появляется Безразлично. означает ли это, что моя реализация неверна, если она содержит объект, или это означает, что нет такого файла?

EDIT здесь, где я добавить Массив

-(IBAction) addToFavorites { 

favoritesArray = [[NSMutableArray alloc] init]; 
[favoritesArray addObject:@"one"]; 
NSLog (@"hello"); 

почему это не показывает вверх как объект @"one"

+0

В этом коде нет ничего общего с файлами. –

+0

я отредактировал вопрос –

ответ

1

Четвертый журнал не появляется, потому что массив не содержит объект @"one" - NSLog находится внутри теста утверждения if для этого случая.

С кодом, как показано, это правильно - массив будет пустым, и поэтому неудивительно, что нет @"one".

Предположительно, настоящий код делает что-то, что помещает материал в массив, но поскольку мы не можем видеть, что об этом трудно сказать.

EDIT: Хотя код вы добавили к вопросу для addToFavorites кажется достаточно простым, он все еще не ясно, как она относится к исходному коду. Откуда ему звонить? Какова последовательность событий?

Одна из проблем заключается в том, что вы, кажется, выделяете новый массив в обоих местоположениях. Если это так, то причина, по которой вы не видите @"one", заключается в том, что вы добавляете ее в один массив и ищете ее в другом. Тот факт, что оба они называются favoritesArray, является случайным и просто загрязняет воду.

На самом деле, очень вероятно, что вы не должны выделять массив в любом месте, но должны просто ссылаться на массив, который распределяется только один раз в другом месте (например, в назначенном классом методе init), а затем хранится как ivar на всю жизнь вашего приложения.

+0

i отредактировал мой вопрос –

+0

@Alx см. Обновленный ответ выше. – walkytalky

+0

Или, по крайней мере, для срока жизни экземпляра класса и освобождается, когда экземпляр освобожден (т. Е. В методе '- (void) dealloc' класса). –

Смежные вопросы