Objective c UTF8字符串问题
我面临一个奇怪的问题,这个Objective c UTF8字符串问题,objective-c,cocoa,nslog,Objective C,Cocoa,Nslog,我面临一个奇怪的问题,这个UTF8String: parentMode = [NSString stringWithContentsOfFile:filePath encoding:NSUTF8StringEncoding error:nil]; … if(parentMode != @"Sleep") { NSLog(@"%s", [parentMode UTF8String]); } 我的问题是: 为什么我必须进行此转换才能记录parentMode 日志正在打印S
UTF8String
:
parentMode = [NSString stringWithContentsOfFile:filePath encoding:NSUTF8StringEncoding error:nil];
…
if(parentMode != @"Sleep")
{
NSLog(@"%s", [parentMode UTF8String]);
}
我的问题是:
parentMode
Sleep
。那么,如果真的这样做了,那该怎么办呢要记录字符串,可以编写:
NSLog(@"%@", parentMode);
使用%@
占位符,不需要将其转换回UTF-8
这可能也解释了if语句工作的原因
更新:
您应该将字符串与isEqualToString:
[parentMode isEqualToString: @"Sleep"]
要记录字符串,可以编写:
NSLog(@"%@", parentMode);
使用%@
占位符,不需要将其转换回UTF-8
这可能也解释了if语句工作的原因
更新:
您应该将字符串与isEqualToString:
[parentMode isEqualToString: @"Sleep"]
不能使用普通关系运算符比较字符串,必须使用:
if (![parentMode isEqualToString:@"Sleep"])
{
NSLog (@"%@", parentMode);
}
但是,在使用该方法之前,您可能需要检查
parentMode
是否为nil
。您不需要使用UTF8String
方法,可以使用%@
格式说明符直接记录字符串。如果这不起作用,那么您在提供的代码中忽略了一些非常重要的内容。您不能使用普通的关系运算符比较字符串,必须使用:
if (![parentMode isEqualToString:@"Sleep"])
{
NSLog (@"%@", parentMode);
}
但是,在使用该方法之前,您可能需要检查
parentMode
是否为nil
。您不需要使用UTF8String
方法,可以使用%@
格式说明符直接记录字符串。如果这不起作用,那么您在提供的代码中忽略了一些非常重要的内容。如果您要比较整数,那么您必须使用您在文章中使用的语法。但是,当您比较字符串时,请使用此语法
if (![parentMode isEqualToString:@"Sleep"])
{
NSLog (@"%@", parentMode);
}
如果你在比较整数,那么你必须使用你在文章中使用的语法。但是当你比较字符串时,使用这个
if (![parentMode isEqualToString:@"Sleep"])
{
NSLog (@"%@", parentMode);
}
这是不对的。如果我一直用@its崩溃来登录。我试过很多方法。另一件事是,如果值是sleep,为什么要设置if条件???字符串比较不正确。您应该使用isEqualToString:来比较字符串。而且它不应该与@“%@”格式字符串崩溃。如果是这样的话,问题就出在别处了。如果我一直用@its崩溃来登录。我试过很多方法。另一件事是,如果值是sleep,为什么要设置if条件???字符串比较不正确。您应该使用isEqualToString:来比较字符串。而且它不应该与@“%@”格式字符串崩溃。如果是这样,问题就在别处。很简单,为什么日志显示睡眠?如果它是Sleep,if语句不是true,应该有一个日志。很简单,为什么日志显示Sleep?如果它处于睡眠状态,则if语句不为true,并且应该有一个日志。。