2016-11-02 5 views
-2

Я новичок в объекте-c.Я имею одну строку, которая содержит значение как 0,13,5. Теперь я пытаюсь выполнить различные функции, используя значение.Выполнение функции, основанной на строковом значении

Вот мой код.

NSString* statusfield = [NSString stringWithFormat:@"%@",[tmpDict objectForKey:@"StatusId"]]; 
if([statusfield isEqualToString:@"13"]) 
{ 
    [cell.mySegmentedControl setTitle:@"SEND TO ADMIN" forSegmentAtIndex:0]; 
    [cell.mySegmentedControl setTitle:@"EVALUATE" forSegmentAtIndex:1]; 
} 
if([statusfield isEqualToString:@"5"]) 
{ 
    [cell.mySegmentedControl setEnabled:NO forSegmentAtIndex:0]; 
    [cell.mySegmentedControl setEnabled:NO forSegmentAtIndex:1]; 
} 

if([statusfield isEqualToString: @"1"]) 
{ 
    [cell.mySegmentedControl setTitle:@"ACCEPT" forSegmentAtIndex:0]; 
    [cell.mySegmentedControl setTitle:@"REJECT" forSegmentAtIndex:1]; 
} 
if([statusfield isEqualToString:@"3"]) 
{ 
    [cell.mySegmentedControl setTitle:@"VIEW" forSegmentAtIndex:0]; 
    [cell.mySegmentedControl setSelectedSegmentIndex:UISegmentedControlNoSegment]; 
} 

Первая строка и последняя строка содержит 3. Таким образом, она показывает дубликаты в моем сегментированном элементе управления. Я хочу проверить точное состояние.

Любая помощь будет оценена по достоинству.

+0

вы можете поделиться скриншот, а также (я не вниз проголосовали вас). – vaibhav

+0

Нет необходимости прикреплять снимок экрана. Я прошу логику проверить условие на основе строкового значения. –

+0

«первая строка и последняя строка содержит 3»: не имеет значения, так как вы выполняете 'isEqualToString:', а не 'containsString:'. Кроме того, вы можете использовать случай переключения: 'NSUInteger status = [[tmpDict objectForKey: @" StatusId "] integerValue]; switch (status): {case 3: {// Вы делаете} break; case 5: {// Вы делаете} break;} и т. д. – Larme

ответ

0

ниже один работал для меня:

NSString* statusfield = @"3"; 

    if([statusfield isEqualToString:@"13"]) 
    { 
     NSLog(@"13 executed"); 
    } 
    if([statusfield isEqualToString:@"5"]) 
    { 
     NSLog(@"5 executed"); 
    } 

    if([statusfield isEqualToString: @"1"]) 
    { 
     NSLog(@"1 executed"); 
    } 
    if([statusfield isEqualToString:@"3"]) 
    { 
     NSLog(@"3 executed"); 
    } 

я войти, как показано ниже

// 3 executed 
+0

Я думаю, что результат такой же, используя только 'if' с методом' isEqualToString', но здесь выполнение diff использует 'else if'? – vaibhav

+0

да, вы правы, он дает тот же результат, извините – Vinodh

 Смежные вопросы

  • Нет связанных вопросов^_^