我创建了一个静态库并尝试使用link
将其绑定到Monotouch在绑定中我想将NSArray从MonoTouch传递给Objective C.我在ApiDefinition.cs中定义了它 NSObject [] DataArray {get;组; }
var b = new [] {“Item 1”,“Item 2”,“Item 3”};
获得以下错误
无法将类型'string []'隐式转换为MonoTouch.Foundation.NSObject []
NSArray array1 = NSArray.FromObjects(“第1项”,“第2项”,“第3项”);
获得以下错误
无法将MonoTouch.Foundation.NSArray类型隐式转换为MonoTouch.Foundation.NSObject []
如何将数组从MonotOuch传递到Objective C?
答案 0 :(得分:5)
绑定objective-c数组时有多种选择,例如:您可以使用NSArray
而不是NSObject[]
。我更喜欢后者,但两者都是有效的选择。
NSArray array1 = NSArray.FromObjects ("Item 1", "Item 2", "Item 3");
使用NSArray
会使上述代码生效,因为它返回NSArray
。
OTOH你选择了NSObject[]
所以你必须遵循你的决定,即使用一组NSObject
var b = new[] { "Item 1", "Item 2", "Item 3" };
以上将使用System.String
数组。 string
和NSObject
之间没有直接转换。您可以将其重写为:
var b = new NSObject [] { new NSString ("Item 1"), new NSString ("Item 2"), new NSString ("Item 3") };
应该满足编译器和可能,如果没有看到它就无法确定,是您的原生API想要的。
注意:如果原生 API接受NSString
数组,那么您可以将其绑定为NSString[]
。