Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cocoa/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c UTF8字符串问题_Objective C_Cocoa_Nslog - Fatal编程技术网

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,并且应该有一个日志。。