수색…


통사론

  • @{ 핵심 가치, ... }

  • [NSDictionary dictionaryWithObjectsAndKeys : value, key, ..., nil];

  • dict [ key ] = ;

  • id = dict [ key ];

비고

NSDictionary 클래스는 키와 값의 불변 연결을 관리하는 객체에 프로그래밍 방식의 인터페이스를 선언합니다. 임의의 키와 관련된 데이터를 편리하고 효율적으로 검색 할 필요가있는 경우이 클래스 또는 NSMutableDictionary의 하위 클래스를 사용하십시오. NSDictionary는 정적 사전을 만들고 NSMutableDictionary는 동적 사전을 만듭니다. 편의상 용어 사전은 정확한 클래스 멤버십을 지정하지 않고 이러한 클래스 중 하나의 인스턴스를 참조합니다.

사전 내의 키 - 값 쌍을 항목이라고합니다. 각 항목은 키를 나타내는 하나의 객체와 해당 키의 값인 두 번째 객체로 구성됩니다. 사전 내에서 키는 고유합니다. 즉, 하나의 사전에 두 개의 키가 같지 않습니다 (isEqual :에 의해 결정됨). 일반적으로 키는 모든 객체가 될 수 있습니다 (NSCopying 프로토콜을 준수하는 경우 - 아래 참조). 키 - 값 코딩을 사용할 때 키는 문자열이어야합니다 (키 - 값 코딩 기본 사항 참조). 키도 값도 무효가 될 수 없습니다. 사전에 null 값을 표시해야하는 경우에는 NSNull을 사용해야합니다.

NSDictionary는 Core Foundation의 CFDictionaryRef와 함께 "수신자 부담 브리지"서비스를 제공합니다. 수신자 부담 브리징에 대한 자세한 내용은 수신자 부담 브리징을 참조하십시오.

리터럴을 사용하여 만들기

NSDictionary *inventory = @{
    @"Mercedes-Benz SLK250" : @(13),
    @"BMW M3 Coupe" : @(self.BMWM3CoupeInventory.count),
    @"Last Updated" : @"Jul 21, 2016",
    @"Next Update"  : self.nextInventoryUpdateString
};

dictionaryWithObjectsAndKeys를 사용하여 만들기 :

NSDictionary *inventory = [NSDictionary dictionaryWithObjectsAndKeys:
    [NSNumber numberWithInt:13], @"Mercedes-Benz SLK250",
    [NSNumber numberWithInt:22], @"Mercedes-Benz E350",
    [NSNumber numberWithInt:19], @"BMW M3 Coupe",
    [NSNumber numberWithInt:16], @"BMW X6",
    nil];

nil 은 끝을 나타내는 센티널로서 마지막 매개 변수로 전달되어야합니다.

사전을이 방법으로 인스턴스화 할 때 값이 먼저오고 키가 두 번째임을 기억하는 것이 중요합니다. 위의 예에서 문자열은 키이고 숫자는 값입니다. 메서드의 이름도 이것을 반영합니다 : dictionaryWithObjectsAndKeys . 이것이 올바르지는 않지만 사전 (리터럴 포함)을 인스턴스화하는보다 현대적인 방법이 선호됩니다.

plists를 사용하여 만들기

NSString *pathToPlist = [[NSBundle mainBundle] pathForResource:@"plistName" 
    ofType:@"plist"];
NSDictionary *plistDict = [[NSDictionary alloc] initWithContentsOfFile:pathToPlist];

NSDictionary에 값 설정하기

값을 얻는 방법에 따라 NSDictionary에서 키 객체를 설정하는 여러 가지 방법이 있습니다. 예를 들어, 자동차 목록에 람보르기니를 추가하려면

표준

[cars setObject:lamborghini forKey:@"Lamborghini"];

다른 객체와 마찬가지로 NSDictionary 메서드를 호출하여 키 객체 인 objectForKey: 호출합니다. 이것을 setValue:forKey: 와 혼동하지 않도록주의하십시오 setValue:forKey: ; 그것은 완전히 다른 것입니다. 핵심 가치 코딩

속기

cars[@"Lamborghini"] = lamborghini;

이것은 C #, Java 및 Javascript와 같은 대부분의 다른 언어로 사전에 사용하는 구문입니다. 그것은 표준 구문보다 훨씬 편리하며 틀림없이 더 읽기 쉽습니다 (특히 다른 언어로 작성하는 경우). 물론 당연히 표준 이 아닙니다. 최신 버전의 Objective C에서만 사용할 수 있습니다.

NSDictionary에서 가치 얻기

키를 사용하여 NSDictionary에서 객체를 가져 오는 방법은 여러 가지가 있습니다. 예를 들어, 자동차 목록에서 람보르기니를 얻으려면

표준

Car * lamborghini = [cars objectForKey:@"Lamborghini"];

다른 객체와 마찬가지로 NSDictionary 메서드를 호출하면 키 객체 인 objectForKey: 됩니다. 이것을 valueForKey: 와 혼동하지 않도록주의하십시오. 그것은 완전히 다른 것입니다. 핵심 가치 코딩

속기

Car * lamborghini = cars[@"Lamborghini"];

이것은 C #, Java 및 Javascript와 같은 대부분의 다른 언어로 사전에 사용하는 구문입니다. 그것은 표준 구문보다 훨씬 편리하며 틀림없이 더 읽기 쉽습니다 (특히 다른 언어로 작성하는 경우). 물론 당연히 표준 이 아닙니다. 최신 버전의 Objective C에서만 사용할 수 있습니다.

NSDictionary에 이미 키가 있는지 확인하십시오.

목표 c :

   //this is the dictionary you start with. 
 NSDictionary *dict = [NSDictionary dictionaryWithObjectsAndKeys:@"name1", @"Sam",@"name2", @"Sanju",nil];

//check if the dictionary contains the key you are going to modify.  In this example, @"Sam"
if (dict[@"name1"] != nil) {
    //there is an entry for Key name1       
}
else {
    //There is no entry for name1       
}


Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow