Monotouch: преобразование объекта в NSObject
Как можно преобразовать экземпляр объекта в NSObject один?
Я создал NSDictionary из
NSDictionary.FromObjectAndKey();
Этот метод хочет NSObject, но у меня есть пользовательский объект для передачи:
int key = 2341;
var val = new MyClass();
NSDictionary.FromObjectAndKey(val, key); // obviously it does not work!!
Как это исправить? Заранее благодарю вас.
Ответы
Ответ 1
Вы не можете преобразовать произвольный объект в NSObject. NSObject.FromObject попытается обернуть общие типы данных, такие как числа, строки, прямоугольники, точки, преобразования и несколько других типов .NET в их эквивалентные типы NSObject.
В вашем конкретном примере "MyClass" должен был бы быть получен из NSObject, прежде чем вы сможете использовать его в NSDictionary.
Ответ 2
Самое легкое решение, которое я смог найти, - это обернуть объект .Net в NSObject, а затем распаковать при необходимости.
public class NSObjectWrapper : NSObject
{
public object Context;
public NSObjectWrapper (object obj) : base()
{
this.Context = obj;
}
public static NSObjectWrapper Wrap(object obj)
{
return new NSObjectWrapper(obj);
}
}
Пример использования:
// wrap
var myNSObj = NSObjectWrapper.Wrap(new MyClass());
// unwrap
var myObj = myNSObj.Context as MyClass;
Ответ 3
Это способ:
NSDictionary.FromObjectAndKey(NSObject.FromObject(val), NSObject.FromObject(key));