ios – 发送到实例的无法识别的选择器 – 仅限Swift 4

ios – 发送到实例的无法识别的选择器 – 仅限Swift 4,第1张

概述我无法理解这个错误意味着什么.我的应用程序工作正常,直到我迁移到 Swift 4.现在我在尝试打开几个视图控制器时收到此tableView:numberOfRowsInSection错误.我在Swift 3.2中没有遇到任何这些错误.在所有情况下都实现了numberOfRowsInSection方法,并且看起来很好.谁能指出我正确的方向? 2017-11-26 10:21:04.973523-06 我无法理解这个错误意味着什么.我的应用程序工作正常,直到我迁移到 Swift 4.现在我在尝试打开几个视图控制器时收到此tableVIEw:numberOfRowsInSection错误.我在Swift 3.2中没有遇到任何这些错误.在所有情况下都实现了numberOfRowsInSection方法,并且看起来很好.谁能指出我正确的方向?

2017-11-26 10:21:04.973523-0600 Y2GOsp[27701:6382461]
-[Y2GOsp.ClIEntDetailVIEwController tableVIEw:numberOfRowsInSection:]: unrecognized selector sent to instance 0x7fa51c89f000 2017-11-26
10:21:43.328635-0600 Y2GOsp[27701:6382461] *** Terminating app due to
uncaught exception ‘NSinvalidargumentexception’,reason:
‘-[Y2GOsp.ClIEntDetailVIEwController
tableVIEw:numberOfRowsInSection:]: unrecognized selector sent to
instance 0x7fa51c89f000’

numberOfRowsInSection实现:

例1:

func tableVIEw(_ tableVIEw: UItableVIEw,numberOfRowsInSection section: Int) -> Int {    return 1}

例2:

func tableVIEw(_ tableVIEw: UItableVIEw,numberOfRowsInSection section: Int) -> Int {    return dayAppoints.count}
解决方法 @Hamish在评论中发现了这个问题.您忘了将UItableVIEwDataSource添加到类声明中.因此,您的数据源方法未暴露给Objective-C.

我建议尝试将@objc添加到方法中确认了问题.

这在Swift 3中起作用的原因是,从NSObject派生的所有类方法(UIVIEwController都可以使用)可用于Objective-C.

在Swift 4 (due to SE-0160)中,有必要使用@objc显式标记将通过选择器调用的函数,除非你覆盖在基类中如此标记的函数,或者在这种情况下,如果函数满足@的要求objc协议定义.

总结

以上是内存溢出为你收集整理的ios – 发送到实例的无法识别的选择器 – 仅限Swift 4全部内容,希望文章能够帮你解决ios – 发送到实例的无法识别的选择器 – 仅限Swift 4所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://www.54852.com/web/1005615.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-22
下一篇2022-05-22

发表评论

登录后才能评论

评论列表(0条)

    保存