UTF8Строка проблема - PullRequest
       13

UTF8Строка проблема

0 голосов
/ 12 сентября 2011

У меня странная проблема с этим UTF8String:

parentMode = [NSString stringWithContentsOfFile:filePath encoding:NSUTF8StringEncoding error:nil];
…
if(parentMode != @"Sleep")
{   
    NSLog(@"%s", [parentMode UTF8String]);      
}

Мои вопросы:

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

  2. Журнал печатается Sleep. Так как же это так, если все равно это сделать?

Ответы [ 3 ]

2 голосов
/ 12 сентября 2011

Вы не можете сравнивать строки, используя обычные реляционные операторы, вы должны использовать:

if (![parentMode isEqualToString:@"Sleep"])
{
    NSLog (@"%@", parentMode);
}

Однако вы можете проверить, что parentMode не nil, прежде чем использовать этот метод. Вам не нужно использовать метод UTF8String, вы можете напрямую записать строку, используя спецификатор формата %@. Если это не работает, значит, вы упустили что-то очень важное из предоставленного вами кода.

1 голос
/ 12 сентября 2011

Чтобы записать строку, вы можете написать:

 NSLog(@"%@", parentMode);

Используя заполнитель %@, нет необходимости преобразовывать его обратно в UTF-8.

Это, вероятно, также объясняет, почему оператор if работает.

Обновление:

Вы должны сравнить строку с isEqualToString:

[parentMode isEqualToString: @"Sleep"]
0 голосов
/ 12 сентября 2011

Если вы сравниваете целые числа, то вы должны использовать тот синтаксис, который вы использовали в посте. Но при сравнении строк используйте это.

if (![parentMode isEqualToString:@"Sleep"])
{
    NSLog (@"%@", parentMode);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...