Ios 为Swift中的目标C函数提供NSMutableArray类型
我有一个用Objective C编写的库函数,它有一个指向NSMutableArray的指针。但是,当我尝试使用Swift数组调用它时,会出现以下错误: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
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参数等于avar mutArr=[1,2,3,4]
,它仍然无法编译。但是根据文档,声明为“var”(而不是“let”)的数组是可变数组。@phileaton:Swift的array
与NSArray
不同。把Swift中的数组想象成SWArray:-)哈哈,好吧,我想我只是对没有本地支持感到失望,因为NSArray和NSMutableArray在Objective-C中是如此的基本。
ex(nil) // does compile