Objective-C Language
NSDictionary
수색…
통사론
@{ 핵심 가치, ... }
[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
}