2016-09-24 4 views
0

Xamarin에서 NSDictionary<NSString, NSObject> 유형의 객체를받는 함수와 인터페이스해야합니다.어떻게 Xamarin에서 NSDictionary <NSString, NSObject> 개체에 대한 값을 설정합니까?

먼저 구문을 이해하지 못합니다. 정확히 NSDictionary<NSString, NSObject> 유형의 개체입니까? NSDictionary 유형이 있고 하나 만들고 키와 값을 설정하는 방법을 알고 있지만 NSDictionary<?,?>은 무엇입니까? 특별한 종류의 튜플 인 것 같습니까?

둘째, 어떻게 이러한 개체를 만들고 키와 관련 개체를 정의합니까?

답변

1

NSDictionary<TKey, TValue>NSDictionary의 일반적인 버전 일뿐입니다. 즉, 키는 모두 TKey (귀하의 경우 NSString)이고 값은 모두 TValue (귀하의 경우 NSObject.)입니다. 이렇게하면 유형 안전성이 향상됩니다. 정수로 키를 추가 할 수 없습니다. 기본 iOS 개체는 여전히 NSDictionary입니다. 이 클래스는 일종의 "문법적 설탕"입니다. 왜냐하면 우리는 C#에서의 엄격한 입력에 익숙하고 가능한 한 그것을 사용하기를 원하기 때문입니다.

생성자를 사용하여 생성 할 수 있습니다. 여러 생성자가 있습니다. 예 : NSDictionary(TKey[] keys, TValue[] values)은 키와 값을 매개 변수로 가져와 NSDictionary을 만듭니다.

var keys = new[] 
{ 
    new NSString("key1"), 
    new NSString("key2"), 
    new NSString("key3"), 
    new NSString("key4") 
}; 

var objects = new NSObject[] 
{ 
    // don't have to be strings... can be any NSObject. 
    new NSString("object1"), 
    new NSString("object1"), 
    new NSString("object1"), 
    new NSString("object1") 
}; 

var dicionary = new NSDictionary<NSString, NSObject>(keys, objects);