Monotouch:将对象转换为 NSObject

发布于 2024-10-31 23:08:15 字数 330 浏览 0 评论 0原文

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

我已经从这个方法创建了一个 NSDictionary

NSDictionary.FromObjectAndKey();

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

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

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

How is it possible to convert an Object instance to NSObject one?

I've created a NSDictionary from

NSDictionary.FromObjectAndKey();

This method wants an NSObject but I have custom object to pass in:

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

How to fix this? Thank you in advance.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

陈甜 2024-11-07 23:08:15

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

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

You can not convert an arbitrary object into an NSObject. The NSObject.FromObject will try to wrap common data types like numbers, strings, rectangles, points, transforms, and a handful of other .NET types into their equivalent NSObject types.

In your particular example, "MyClass" would have to derive from an NSObject before you could use it in the NSDictionary.

佞臣 2024-11-07 23:08:15

我能找到的最简单的解决方案是将 .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;

The easiest solution I could find was to wrap the .Net object in an NSObject, then unwrap as needed.

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);
    }
}

Example use:

// wrap
var myNSObj = NSObjectWrapper.Wrap(new MyClass());
// unwrap
var myObj = myNSObj.Context as MyClass;
我纯我任性 2024-11-07 23:08:15

方法是这样的:

NSDictionary.FromObjectAndKey(NSObject.FromObject(val), NSObject.FromObject(key));

This is the way:

NSDictionary.FromObjectAndKey(NSObject.FromObject(val), NSObject.FromObject(key));
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文