2016-08-23 7 views
0

У меня есть массив, содержащий разные объекты, мне нужно найти одно свойство NSString определенного текста. Интересно, почему следующее не работает:EqualToString не работает

for (int i = 0; i < self.arrValues.count; i++) { 
    NSLog(@"arr value VM class %@", [self.arrValues[i] class]); 
    id val = self.arrValues[i]; 
    if ([val respondsToSelector:@selector(title)]){ 

     NSLog(@"ob-class-%@", [self.arrValues[i] class]); 
     SideMenuItemVM *obj = self.arrValues[i]; 
     NSLog(@"title %@", obj.title); 
     if ([obj.title isEqualToString:@"Мероприятия"]){ 
      NSLog(@"Got it"); 
     } 
    } 
} 

он делает вывод title Мероприятия, но не второй NSLog. Что я упустил?

ОЦЕНКА значение класса VM класс SideMenuItemVM, в котором содержатся свойства @property (nonatomic, strong) NSString *title;

Таким образом, выход здесь выглядят как

2016-08-23 11:19:33.420 project[56065:18112626] ob-class-SideMenuItemVM 
2016-08-23 11:19:33.420 project[56065:18112626] title Мероприятия 
+1

Возможно, obj.title имеет некоторые пробелы в качестве префикса или суффикса – ddb

+0

, возможно, лучше использовать 'containsString' – Tj3n

+1

Зачем тестировать селектор' title', а затем преобразовывать его в определенный тип класса? Почему бы просто не использовать 'isKindOfClass' вместо' responsesToSelector'? Также нам нужно увидеть список элементов массива, чтобы увидеть, где вы поступили неправильно. – Droppy

ответ

0

Если кто-то сталкиваются с подобной проблемой, я нашел ответ, спасибо за помощь я содержится в комментариях. После того, как я процитирую свою инструкцию NSLog, я нахожу что-то странное. вывода строки из NSLog(@"title '%@'", obj.title); выглядят как: 2016-08-23 11:45:22.372 project[67747:18256287] TITl 'Мероприятия '

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

if ([obj.title containsString:@"Мероприятия"]){ 
       NSLog(@"got value"); 
    } 

Решите эту проблему.

+2

Добро пожаловать. – Droppy

+5

Имейте в виду, что это может фактически дать вам ложные срабатывания. Например, если заголовок «XМесяX», 'containsString' вернет true. Вместо этого вы можете удалить любые ведущие и завершающие пробелы, используя '[obj.title stringByTrimmingCharactersInSet: [NSCharacterSet whitespaceCharacterSet]]' и затем вызвать 'isEqualToString'. – pajevic

+0

@pajevic спасибо, это имеет смысл. –

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

  • Нет связанных вопросов^_^