1

我创建了一个静态库并尝试使用链接将其绑定到 Monotouch

在绑定中,我想将 NSArray 从 MonoTouch 传递给 Objective C。我在 ApiDefinition.cs 中定义了它,例如 NSObject [] DataArray { get; 放; }

  • 当我尝试从 MonoTouch 传递字符串数组时

var b = new[] { "项目 1", "项目 2", "项目 3" };

得到以下错误

无法将类型“string[]”隐式转换为 MonoTouch.Foundation.NSObject[]

  • 当我尝试从 MonoTouch 传递 NSArray

NSArray array1 = NSArray.FromObjects ("Item 1", "Item 2", "Item 3");

得到以下错误

无法将 MonoTouch.Foundation.NSArray 类型隐式转换为 MonoTouch.Foundation.NSObject[]

如何将数组从 MonotOuch 传递到 Objective C?

4

1 回答 1

5

绑定objective-c 数组时有多种选择,例如,您可以使用NSArrayover NSObject[]。我更喜欢后者,但两者都是有效的选择。

NSArray array1 = NSArray.FromObjects ("Item 1", "Item 2", "Item 3");

使用 anNSArray会使上面的代码工作,因为它返回一个NSArray.

OTOH 您已选择NSObject[],因此您必须遵循您的决定,即使用一系列NSObject

var b = new[] { "Item 1", "Item 2", "Item 3" };

上面将使用一个数组System.Stringstring和之间没有直接转换NSObject。您可以将其重写为:

var b = new NSObject [] { new NSString ("Item 1"), new NSString ("Item 2"), new NSString ("Item 3") };

这应该满足编译器并且可能,如果不看到它就无法确定,这就是您的本机 API 想要的。

注意:如果本API 接受一个数组,NSString那么您可以将它绑定在 as NSString[]

于 2013-09-03T20:16:22.767 回答