2013-05-24 3 views
-1

У меня есть уникальный сценарий получения индекса значения элемента, где структура являетсяПолучение индекса в строковом значении в пределах массива из массива

Array - в пределах массива - в Словаре

(
    { 
     STS = OPEN; 
     "STS_ICON" = "LIGHT_GREY"; 
    }, 
    "Headerquarter Planning" 
), 
    (
     { 
     STS = INPR; 
     "STS_ICON" = "LIGHT_BLUE"; 
    }, 
    "In Process" 
), 
    (
      { 
     STS = COMP; 
     "STS_ICON" = "LIGHT_GREEN"; 
    }, 
    Released 
), 
    (
      { 
     STS = CANC; 
     "STS_ICON" = "LIGHT_RED"; 
    }, 
    "ON HOLD - Call Transfer Delay" 
) 
) 

iN В этом случае допустим, что я хочу индекс из строки "ON HOLD - Call Transfer Delay".

Я попытался с так ..

NSUInteger index; 
if([listOfStatus containsObject: list.statusType]) 
{ 
    index = [listOfStatus indexOfObject: list.statusType]; 
} 

где list.statusType является @ "ON HOLD - Call Transfer Delay". Но здесь я получаю «индекс» некоторые странные значения 15744929.

ответ

1

Попробуйте

- (NSInteger)findIndexOfStatus:(NSString *)status 
{ 

    NSString *filePath = [[NSBundle mainBundle]pathForResource:@"Status" 
                 ofType:@"json"]; 
    NSData *data = [[NSData alloc]initWithContentsOfFile:filePath]; 

    NSArray *listOfStatus = [NSJSONSerialization JSONObjectWithData:data 
                 options:0 
                  error:nil]; 


    NSPredicate *predicate = [NSPredicate predicateWithBlock:^BOOL(NSArray *evaluatedObject, NSDictionary *bindings) { 

     //NSDictionary *dict = evaluatedObject[0]; 
     //return [dict[@"STS"] isEqualToString:status]; 

     NSString *statusType = evaluatedObject[1]; 
     return [statusType isEqualToString:status]; 

    }]; 

    return [listOfStatus indexOfObjectPassingTest:^BOOL(id obj, NSUInteger idx, BOOL *stop) { 
     return [predicate evaluateWithObject:obj]; 
    }]; 
} 

Вы можете найти индекс по телефону

NSInteger index = [self findIndexOfStatus:@"ON HOLD - Call Transfer Delay"]; 

Я также закомментирована возможность узнать, если вы хотите использовать код состояния.

Status.json файл

+0

что d необходимость использования Filepath здесь .. а также это не ответ JSON .. текст, который я положил это показывает мою структуру данных .. – ibiren

+0

@ibiren Я создал файл JSon добавлен в комплект, чтобы проверить, работает ли код. Поделился файлом .json, чтобы вы могли его проверить. – Anupdas

+0

ok .. но его значение индекса: 2147483647 # dats d problem # Спасибо за ответ ur – ibiren

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