2011-12-27 3 views
0

Я просто изучаю Objective-C в Xcode 4.2. То, что я пытаюсь сделать, должно быть очень простым, но это сводит меня с ума. Я пытаюсь передать объект NSString из одного метода класса в другой метод класса, и мне удалось успешно передать NSArray.Передача объектов NSString между двумя методами класса

Я огляделся и нашел вопросы о том, как передавать объекты NSString между двумя методами экземпляра (которые я могу нормально работать). Два класса ниже:

+ (double)numberOfOperations:(NSArray *)program equalityTest:(NSString *)testForEquality 
{ 
    NSSet *stackSet = [[NSSet alloc] initWithArray:program]; 
    NSPredicate *predicate = [NSPredicate predicateWithFormat:testForEquality]; 
    NSSet *filteredStackSet = [stackSet filteredSetUsingPredicate:predicate]; 
    return [filteredStackSet count]; 

} 

+ (double)descriptionOfProgram:(NSMutableArray *)program 
{ 
    NSArray *stack = [program copy]; 

    double test = [self numberOfOperations:stack equalityTest:@"+"]; 
    return test; 
} 

, когда я скомпилировать и запустить приведенный выше код, я получаю сообщение об ошибке во время выполнения «Невозможно разобрать строку„+“Я также вставил код debbuger ниже:.

2011-12-27 14: 51: 53,755 Калькулятор [320: F803] * Согласующее приложение из-за неперехваченное исключение 'NSInvalidArgumentException', причина: 'Невозможно разобрать строку формата "+'
*
первых бросок вызова:
(0x13be052 0x154fd0a 0x94fdc1 0x94fbdf 0x94fb93 0x46fb 0x4829 0x 3c9c 0x2ac3 0x2a3e 0x13bfec9 0x185c2 0x1855a 0xbdb76 0xbe03f 0xbd2fe 0x3da30 0x3dc56 0x24384 0x17aa9 0x12a8fa9 0x13921c5 0x12f7022 0x12f590a 0x12f4db4 0x12f4ccb 0x12a7879 0x12a793e 0x15a9b 0x1f38 0x1e95) Terminate называется бросать исключение (GDB).

Возможно ли передавать объекты NSString между классами? Дайте мне знать, если вам нужна дополнительная информация.

ответ

1

@"+" не является допустимым предикатом, он выплескивает манекен, потому что он не может создать объект NSPredicate с указанным форматом. Это не связано с передачей строк.

Чтобы узнать, как должна выглядеть строка предиката, выполните одно из следующих действий: Predicate Programming Guide.

+0

Спасибо! Я смог переформатировать предикат, и теперь он работает правильно. –

0

Проблема не в передаче строк, это нормально работает. Проблема заключается в предикате. «+» не является допустимым предикатом, это не имеет никакого смысла. Дополнительную информацию о создании предикатов можно найти на странице Predicate Programming Guide.

+0

Спасибо! Я смог переформатировать предикат, и теперь он работает правильно. –