Objective c 目标C:变量不会被使用(如果)

Objective c 目标C:变量不会被使用(如果),objective-c,variables,if-statement,Objective C,Variables,If Statement,我使用了一个非常简单的if子句,它只检查一个名称,并且应该返回一个变量,但是它不能被识别。 createUser变量被标记为未使用 NSString *salesPersonName = [[[SevdeskApiManager sharedManager] currentSevUser] firstName]; if ([salesPersonName isEqual: @"XXX "]) { NSString *createUser = @"1"; } els

我使用了一个非常简单的if子句,它只检查一个名称,并且应该返回一个变量,但是它不能被识别。 createUser变量被标记为未使用

NSString *salesPersonName = [[[SevdeskApiManager sharedManager] currentSevUser] firstName];
    if ([salesPersonName isEqual: @"XXX "]) {
        NSString *createUser = @"1";
    } else if ([salesPersonName isEqual: @"XXXX"]) {
        NSString *createUser = @"11";
    } else if ([salesPersonName isEqual: @"XXXXX"]) {
        NSString *createUser = @"111";
    } else {
        NSString *createUser = @"1111";
    }
    // Hier die keyvalues eintragen
    NSString *bodyString = [NSString stringWithFormat:@"name=nachtelefonieren&assigned[id]%@=&assigned[objectName]=SevUser&category[id]=31&category[objectName]=Category& createUser[id]=%@&createUser[objectName]=SevUser&noticeCreator=0&deadline=%@&status=100&object[id]=28243&object[objectName]=SevClient",assignedUser,createUser,deadline];

只要将变量声明移到每个变量的范围之外,就可以立即创建并丢弃变量

NSString *createUser;

if ([salesPersonName isEqual: @"XXX "]) {
    createUser = @"1";
} else if ([salesPersonName isEqual: @"XXXX"]) {
    createUser = @"11";
} else if ([salesPersonName isEqual: @"XXXXX"]) {
    createUser = @"111";
} else {
    createUser = @"1111";
}
此外,您可以使用字典代替多if语句:

NSDictionary *dict = @{
    @"XXX " : @"1",
    @"XXXX" : @"11",
    @"XXXXX" : @"111"
};

NSString *createUser = dict[salesPersonName] ?: @"1111";

只要将变量声明移到每个变量的范围之外,就可以立即创建并丢弃变量

NSString *createUser;

if ([salesPersonName isEqual: @"XXX "]) {
    createUser = @"1";
} else if ([salesPersonName isEqual: @"XXXX"]) {
    createUser = @"11";
} else if ([salesPersonName isEqual: @"XXXXX"]) {
    createUser = @"111";
} else {
    createUser = @"1111";
}
此外,您可以使用字典代替多if语句:

NSDictionary *dict = @{
    @"XXX " : @"1",
    @"XXXX" : @"11",
    @"XXXXX" : @"111"
};

NSString *createUser = dict[salesPersonName] ?: @"1111";

只需在if块范围之外声明createUser实例变量,即与salersonName声明类似。这将减少代码中的冗余并解决问题。

只需在if块范围之外声明createUser实例变量,即与您的SalesorsonName声明类似。这将减少代码中的冗余并解决问题。

在if块之外声明实例变量,并使用空值初始化它,因为它可能会在bodyString变量行使程序崩溃

NSString *createUser = @"";
if ([salesPersonName isEqual: @"XXX "]) {
    createUser = @"1";
} else if ([salesPersonName isEqual: @"XXXX"]) {
    createUser = @"11";
} else if ([salesPersonName isEqual: @"XXXXX"]) {
    createUser = @"111";
} else {
    createUser = @"1111";
}

// Hier die keyvalues eintragen
NSString *bodyString = [NSString stringWithFormat:@"name=nachtelefonieren&assigned[id]%@=&assigned[objectName]=SevUser&category[id]=31&category[objectName]=Category& createUser[id]=%@&createUser[objectName]=SevUser&noticeCreator=0&deadline=%@&status=100&object[id]=28243&object[objectName]=SevClient",assignedUser,createUser,deadline];

在if块之外声明实例变量,并用空值初始化它,因为它可能会在bodyString变量行使程序崩溃

NSString *createUser = @"";
if ([salesPersonName isEqual: @"XXX "]) {
    createUser = @"1";
} else if ([salesPersonName isEqual: @"XXXX"]) {
    createUser = @"11";
} else if ([salesPersonName isEqual: @"XXXXX"]) {
    createUser = @"111";
} else {
    createUser = @"1111";
}

// Hier die keyvalues eintragen
NSString *bodyString = [NSString stringWithFormat:@"name=nachtelefonieren&assigned[id]%@=&assigned[objectName]=SevUser&category[id]=31&category[objectName]=Category& createUser[id]=%@&createUser[objectName]=SevUser&noticeCreator=0&deadline=%@&status=100&object[id]=28243&object[objectName]=SevClient",assignedUser,createUser,deadline];

您正在创建三个名为createUser的完全独立的变量,这些变量不在其作用域内使用,编译器会相应地警告您。这些变量会影响现有的createUser变量,否则在示例的最后一行中会出现未知标识符编译器错误。您正在创建三个名为createUser的完全独立变量,这些变量不在其作用域内使用,编译器会相应地警告您。这些变量会影响现有的createUser变量,否则在示例的最后一行中会出现未知标识符编译器错误。