2015-01-16 1 views
-2

이것은 내 코드입니다. 현재 사전 배열에서 해당 데이터에 액세스하고 있지만 간단하고 최적화 된 코드가 있다는 것을 알고 있습니다. ios new in iosNSPredicate를 사용하지 않고 내가 dictioary의 배열에서 데이터를 가져오고 싶습니다

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"description LIKE[cd] 'CallCenterPhoneNumber' "]; 
NSArray *PhoneNumberArrary = [tblData filteredArrayUsingPredicate:predicate]; 
NSDictionary *item = [PhoneNumberArrary objectAtIndex:0]; 
phoneNumber=[item objectForKey:@"value"]; 
NSLog(@"%@",phoneNumber); 
predicate = [NSPredicate predicateWithFormat:@"description LIKE[cd] 'CallCenterEmailAddress' "]; 
NSArray *EmailArrary = [tblData filteredArrayUsingPredicate:predicate]; 
NSDictionary *item1 = [EmailArrary objectAtIndex:0]; 
EmailAddress=[item1 objectForKey:@"value"]; 
NSLog(@"%@",EmailAddress); 
//and this is my array of Dictionary. 
(
    { 
    description = CallCenterPhoneNumber; 
    id = 0; 
    value = 123; 
    }, 
    { 
    description = CallCenterEmailAddress; 
    id = 1; 
    value = "[email protected]"; 
    }, 
) 

답변

0
for (NSDictionary *dictionary in tblData) { 
    if ([dictionary.description rangeOfString:@"CallCenterPhoneNumber" options:NSCaseInsensitiveSearch].location != NSNotFound) { 
     phoneNumber = dictionary; 
    } else if ([dictionary.description rangeOfString:@"CallCenterEmailAddress" options:NSCaseInsensitiveSearch].location != NSNotFound) { 
     emailAddress = dictionary; 
    } 
} 
0

당신을 수 for (... in ...) 루프를 사용하여 상기 어레이의 각 항목을 반복하고, 단순화 된 구문을 이용하여 각각의 사전 정보를 추출한다. 예를 들어, entry이라면 사전에 대한 포인터,

entry[@"description"]; 

가의 usr하지

[entry objectForKey:@"description"]; 
그것은 최고
id phoneNumber = nil; 
    id emailAddress = nil; 

    for (NSDictionary *entry in array) 
    { 
     NSString *description = entry[@"description"]; 

     if ([description isEqualToString:@"CallCenterPhoneNumber"]) 
      phoneNumber = entry[@"value"]; 
     else if ([description isEqualToString:@"CallCenterEmailAddress"]) 
      emailAddress = entry[@"value"]; 
    } 

    NSLog(@"%@", phoneNumber); 
    NSLog(@"%@", emailAddress); 
+0

에 해당된다'id' 대신 실제 유형을 사용 ,이 경우 NSString입니다. 이렇게하면 컴파일러에서 유형 검사 및 자동 완성을 수행 할 수 있습니다. – zaph

+0

@Zaph 실제로'phoneNumber'가'NSString'인지'NSNumber'인지는 명확하지 않습니다. 그것은 둘 중 하나 일 수 있고,'id'는 둘 다 사용할 수 있습니다. 그러나 OP가 배열을 만든 방법에 따라 적절한 형식을 사용해야한다는 데 동의합니다. – user3386109

+0

코드를 작성하는 사람은 다르게 처리해야하기 때문에 알고 있습니다. 'id'를 사용하면 나중에 유지 관리가 어려워집니다. – zaph