2016-09-24 3 views
0

Мне нужно взаимодействовать с функцией, которая получает объект типа NSDictionary<NSString, NSObject> в Xamarin.Как установить значения для объекта NSDictionary <NSString, NSObject> в Xamarin?

Во-первых, я не понимаю синтаксис. Что такое объект типа 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);