UTF8String问题

时间:2011-09-12 08:13:55

标签: objective-c cocoa nslog

我遇到了这个UTF8String

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

我的问题是:

  1. 为什么我必须执行此转换才能记录parentMode

  2. 日志正在打印Sleep。那么如果这样做又怎么样呢?

3 个答案:

答案 0 :(得分:2)

您无法使用普通关系运算符比较字符串,您必须使用:

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

但是,在使用该方法之前,您可能需要检查parentMode是否为nil。您不需要使用UTF8String方法,可以使用%@格式说明符直接记录字符串。如果这不起作用,那么从您提供的代码中省略一些非常重要的事情。

答案 1 :(得分:1)

要记录字符串,您可以写:

 NSLog(@"%@", parentMode);

使用%@占位符,无需将其转换回UTF-8。

这也可能解释了为什么 if 语句有效。

更新

您应该将字符串与isEqualToString:

进行比较
[parentMode isEqualToString: @"Sleep"]

答案 2 :(得分:0)

如果你要比较整数,那么你必须使用你在帖子中使用的语法。但是当你比较字符串时使用它。

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