NSOrderedSame не YES, хотя значения в NSLog равны - PullRequest
0 голосов
/ 17 января 2012

У меня простая, но странная проблема.Я сравниваю со строками (взятыми из разных xmls), чтобы узнать, совпадают ли они.Если я отслеживаю переменные через NSLog, они выглядят одинаково, но, очевидно, нет.Так что я думаю, что он должен что-то делать со своими кодировками, но я не знаю что.Кто-нибудь поможет?

Я обнаружил, что строки не имеют одинаковую длину, но я не могу найти пробелы:

Код:

NSString* value1 = [mymovieId stringByReplacingOccurrencesOfString:@" " withString:@""];
NSString* value2 = [movieId stringByReplacingOccurrencesOfString:@" " withString:@""];

NSLog(@"%@ == %@", mymovieId, movieId);
NSLog(@"%i / %i", value1.length, value2.length);

if ([value1 compare:value2] == NSOrderedSame) {
    NSLog(@"YES!");
} else {
    NSLog(@"NO!");
}

результат:

2012-01-17 20:40:06.044 Appname[6307:f803] 75175343 == 75175343
2012-01-17 20:40:06.044 Appname[6307:f803] 9 / 8
2012-01-17 20:40:06.045 Appname[6307:f803] NO!

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

Ответы [ 2 ]

1 голос
/ 17 января 2012

Попробуйте записать строки как данные:

NSLog(@"mymovieId: %@", [mymovieId dataUsingEncoding:NSUnicodeStringEncoding]);
NSLog(@"movieId: %@", [movieId dataUsingEncoding:NSUnicodeStringEncoding]);

Это напечатает шестнадцатеричные дампы строк, что позволит увидеть непечатаемые символы.

Из вашего комментария похоже, что одна из ваших строк начинается с новой строки. Попробуйте это:

movieId = [movieId stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];
mymovieId = [mymovieId stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];
0 голосов
/ 17 января 2012

попробуйте использовать

[NSString compare: options: range:]

(т.е. включить диапазон одной из строк).

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...