17

如何将 Object 实例转换为 NSObject 之一?

我创建了一个 NSDictionary

NSDictionary.FromObjectAndKey();

此方法需要一个 NSObject 但我有自定义对象要传入:

int key = 2341;
var val = new MyClass();
NSDictionary.FromObjectAndKey(val, key); // obviously it does not work!!

如何解决这个问题?先感谢您。

4

3 回答 3

13

您不能将任意对象转换为 NSObject。NSObject.FromObject 将尝试将常见的数据类型(如数字、字符串、矩形、点、变换和一些其他 .NET 类型)包装到它们等效的 NSObject 类型中。

在您的特定示例中,“MyClass”必须从 NSObject 派生,然后才能在 NSDictionary 中使用它。

于 2011-04-15T16:16:39.137 回答
10

我能找到的最简单的解决方案是将 .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;
于 2014-11-28T17:08:19.377 回答
3

这是这样的:

NSDictionary.FromObjectAndKey(NSObject.FromObject(val), NSObject.FromObject(key));
于 2011-04-14T14:29:33.400 回答