我正在使用一个非常简单的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¬iceCreator=0&deadline=%@&status=100&object[id]=28243&object[objectName]=SevClient",assignedUser,createUser,deadline];
答案 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¬iceCreator=0&deadline=%@&status=100&object[id]=28243&object[objectName]=SevClient",assignedUser,createUser,deadline];