Ios 为Swift中的目标C函数提供NSMutableArray类型

Ios 为Swift中的目标C函数提供NSMutableArray类型,ios,objective-c,swift,Ios,Objective C,Swift,我有一个用Objective C编写的库函数,它有一个指向NSMutableArray的指针。但是,当我尝试使用Swift数组调用它时,会出现以下错误: DiscoverViewController.swift:34:20: Could not find an overload for 'init' that accepts the supplied arguments 但是,如果我通过了nil,它就会工作。这是有道理的 以下是Objective-C的一个示例: int ex:(NSMutab

我有一个用Objective C编写的库函数,它有一个指向NSMutableArray的指针。但是,当我尝试使用Swift数组调用它时,会出现以下错误:

DiscoverViewController.swift:34:20: Could not find an overload for 'init' that
accepts the supplied arguments
但是,如果我通过了
nil
,它就会工作。这是有道理的

以下是Objective-C的一个示例:

int ex:(NSMutableArray *)in { return in.count; }
Swift的一个例子是:

ex([1,2,3,4]) // doesn't compile

ex(nil) // does compile
要将Swift数组转换/强制转换为我的库函数正在寻找的NSMutableArray类型,我需要做什么

如果我的示例过于简化,下面是完整的方法签名:

- (id) initWithTitle: (NSString *) title place: (PublicPlaceInfo *) place
datetimeInterval: (DateTimeInterval *) datetimeInterval costBracket: (int)
costBracket creatorId: (PersonID) creatorId cover: (Url) cover experienceId: 
(ExperienceID) experienceId numJoined: (int32_t) numJoined relatedJoined: 
(NSMutableArray *) relatedJoined;
然后我知道它在relatedJoined部分失败了,因为我将所有其他可能匿名的实例化转换为变量。我不得不说,这肯定不是最有用的编译错误

ex([1,2,3,4]) // doesn't compile
这是因为传递的是普通数组,而不是可变数组。首先尝试将其转换为可变数组:
ex(NSMutableArray([1,2,3,4])

nil
NSMutableArray?
的有效参数,这就是它工作的原因

这是因为传递的是普通数组,而不是可变数组。首先尝试将其转换为可变数组:
ex(NSMutableArray([1,2,3,4])


nil
NSMutableArray?
的有效参数,这就是它工作的原因。

好,那么我让relatedJoined参数等于一个
var mutArr=[1,2,3,4]
,它仍然没有编译。但是根据文档,声明为“var”(而不是“let”)的数组是可变数组。@phileaton:Swift的
array
NSArray
不同。把Swift中的数组想象成SWArray:-)哈哈,我想我只是对没有本地支持感到失望,因为NSArray和NSMutableArray在Objective-C中非常重要。好吧,那么我让relatedJoined参数等于a
var mutArr=[1,2,3,4]
,它仍然无法编译。但是根据文档,声明为“var”(而不是“let”)的数组是可变数组。@phileaton:Swift的
array
NSArray
不同。把Swift中的数组想象成SWArray:-)哈哈,好吧,我想我只是对没有本地支持感到失望,因为NSArray和NSMutableArray在Objective-C中是如此的基本。
ex(nil) // does compile