Objective-C:变量将不被使用(如果)

时间:2018-11-12 15:46:14

标签: objective-c variables if-statement

我正在使用一个非常简单的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];

3 个答案:

答案 0 :(得分:3)

只需声明if块作用域内的createUser实例变量(即类似于您声明的salesPersonName)。这样可以减少代码中的冗余并解决问题。

答案 1 :(得分:2)

只需将变量声明移到每个if的范围之外(现在变量已创建并立即丢弃)

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";
}

此外,您可以使用字典来代替multi-if语句:

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

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

答案 2 :(得分:1)

在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];