我遇到了这个UTF8String
:
parentMode = [NSString stringWithContentsOfFile:filePath encoding:NSUTF8StringEncoding error:nil];
…
if(parentMode != @"Sleep")
{
NSLog(@"%s", [parentMode UTF8String]);
}
我的问题是:
为什么我必须执行此转换才能记录parentMode
?
日志正在打印Sleep
。那么如果这样做又怎么样呢?
答案 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);
}