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」をNSDictionaryで使用する前に、NSObjectから派生させる必要があります。

于 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 に答える