копирование объекта из NSMutableArray в другой с помощью оператора IF - PullRequest
1 голос
/ 18 января 2011

ОК, может быть, я больше не вижу ясности и надеюсь, что вы можете помочь.

Я пытаюсь выбрать объект из NSMutableArray, используя:

if([car.seat isEqualToString:@"fancyOne"]){
    fancyThings = [[NSMUtableArray]init];
    [fancyThings addObjects: car];
}

Теперь я забылчтобы сказать вам, что я новичок в этом Objective-C, так что, возможно, я неправильно думаю.

Что я в основном пытаюсь сделать, это получить объект из одного массива, выбрав значениеэто компоненты.

Это способ сделать это, однако у меня продолжают возникать проблемы с моим оператором if.Если я опускаю оператор IF, он заполняет мой другой NSMutableArray точно таким же объектом (thisCar), но если я добавляю оператор IF, он не обнаруживает, что строка такая же в thisCar.seat.

В следующем примере все помещается в normalThings, но есть некоторые aCar.seats, которые содержат строку FANCYONE.Я проверил файл XML на пробелы и тому подобное, но, насколько я вижу, все в порядке.

Должен ли я построить его, используя NSScanner вместо IsEqualToString?

- (void)viewDidLoad {  
    appDelegate = (XMLAppDelegate *)[[UIApplication sharedApplication] delegate];  
    appDelegate.fancyThings = [[NSMutableArray alloc]init];  
    for (CARS *aCar in appDelegate.someCars) {  
        if ([aCar.seats isEqualToString:@"FANCYONE"]){  
            [appDelegate.fancyThings addObject:aCar];  
        }  
        else {  
            [appDelegate.normalThings addObject:aCar];  
        }  
    }  
    self.title = @"Cars";  
    super viewDidLoad];  
}   

РЕДАКТИРОВАТЬ:

Мой ПЛОХОЙ !!Код был на самом деле в порядке!В моем XMLParser произошла ошибка, которая добавила в строки пустые строки, поэтому я не смог получить одинаковую строку!

Ответы [ 3 ]

1 голос
/ 18 января 2011

Надеюсь, это даст вам некоторые рекомендации:

//init new array
NSMutableArray *fancyThings = [[NSMutableArray alloc] init];

//walk your array
for (SomeCarObject *thisCar in arrayOfCars) {
    //is thisCar a qualifying object
    if ([thisCar.seat isEqualToString:@"fancyOne"]) {
        //yes, add thisCar object
        [fancyThings addObject:thisCar];
    }
}
0 голосов
/ 18 января 2011

Это зависит от объема объектов, с которыми вы имеете дело.Если есть 1000 объектов или меньше, этот метод выглядит хорошо.Но если объектов больше, вы рискуете заморозить приложение и иметь большие утечки памяти.Также, если вам понадобится код параллелизма позже, вы должны иметь в виду некоторые другие решения.Вы можете использовать не только строковые объекты в массиве u, вы можете попытаться заполнить массив после запуска приложения в объектах, который отвечает, если строка одинакова или нет.Или используйте nstiontionary с соответствующими ключами.Пожалуйста, прочитайте мой пост Многопоточный дизайн поиска

0 голосов
/ 18 января 2011

Вы захотите создать это NSMutableArray вне цикла for (при условии, что вы просматриваете коллекцию).Затем вы можете добавить к этому NSMutableArray, как вы сделали.

Надеюсь, это поможет!

Кстати, вам следует отредактировать свой вопрос с комментарием, который вы сделали, чтобы уточнить его ..

...