大佬教程收集整理的这篇文章主要介绍了Swift 2.0 Method无法标记为@objc,因为参数的类型无法在Objective-C中表示,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
@objc func personsToFirstStep(persons: [Person]) { for person in persons { if !self.persons.contains(person) && person.id != userID { self.persons.append(person) } } collectionView.reloadData() collectionViewPlaceholder.hidden = true collectionView.hidden = false collectionGradientView.hidden = false }
这个Person类:
class Person: Hashable { var intID: Int = 0 var id: String = "" var name: String = "" var type: String = "" var hashValue: Int { return self.intID } init(id: String,name: String,type: String) { self.id = id self.intID = Int(id)! self.name = name self.type = type } } func ==(lhs: Person,rhs: Person) -> Bool { return lhs.intID == rhs.intID }
class Person: Hashable {
人不是NSObject.但Objective-C只能看到NSObject派生的类类型.因此,您的Person类型对Objective-C是不可见的.但是你的@objc func声明用于一个带有Person数组的函数 – 我们刚才说Person对Objective-C是不可见的.所以你的@objc func声明是非法的. Objective-C无法显示此功能,因为它无法显示其参数.
您需要将类声明更改为如下所示:
class Person: NSObject {
……然后你当然可以在班级的实施中做出任何必要的进一步调整.但是这种改变会使你的@objc func声明合法化. (NSObject是Hashable,所以进行这种调整所需的工作量可能不是很大.)
以上是大佬教程为你收集整理的Swift 2.0 Method无法标记为@objc,因为参数的类型无法在Objective-C中表示全部内容,希望文章能够帮你解决Swift 2.0 Method无法标记为@objc,因为参数的类型无法在Objective-C中表示所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。