Swift函数包含Objective-C类

时间:2016-05-17 18:09:10

标签: objective-c swift

  

更新:此问题不与上述问题重复。   经验证(见下面的评论)方法定义为IS   正确添加到Project-Swift.h文件中。问题涉及到   为什么没有参数的方法可用于Obj-C和   参数不是。

我有一个swift类,旨在由Objective-C类引用。 Swift类包含一个函数,用于发送网络消息并返回包含搜索结果的字典。我遇到奇怪的行为,如果我的函数包含参数,它在实现Objective-C类中不可用。但是,如果我删除所有参数,则该功能可用。

在我的Swift类中如果我按如下方式声明方法,它在Obj-C类中不可用并且不会编译:

func getSearchResults(searchText:String?, searchType:String?, zoom:Int?) -> NSDictionary

然而,删除这样的参数,该功能变得可用于Obj-c并且一切正常:

func getSearchResults() -> NSDictionary

为什么没有参数的函数可用于Obj-C类而含有参数的函数不是?有没有人见过这种行为?谢谢!

2 个答案:

答案 0 :(得分:2)

参数列表中的坏男孩是Int?参数。 Int在Objective-C中表示为NSInteger。因此,它们没有指针,并且不能具有null值。考虑删除可选限定符或将其更改为NSNumber?, 喜欢:func getSearchResults(searchText: String?, searchType: String?, zoom: Int) -> NSDictionary

答案 1 :(得分:1)

Lou Franco的解释是正确的。您的函数具有Int?参数,并且在Objective-C中没有相应的参数。因此整个函数不能暴露给Objective-C。使用Int或,如果确实可以nil,请使用NSNumber?