我们如何在 swift 中使用 NSSelectorFromString ?

2024-05-27

我不明白为什么这总是失败。有什么帮助吗? 显然,我不明白如何NSStringFromSelector作品? 下面是我的代码:

class ViewController: UIViewController {
    override func viewDidLoad() {
        super.viewDidLoad()

        let selector = NSSelectorFromString("test(value:value2:)")
        if self.responds(to: selector) {
            print("it works")
        } else {
            print("it failed")
        }
    }

    func test(value: Int, value2: Int) {
    }
}

您的选择器字符串的格式错误。选择器字符串NSSelectorFromString必须看起来像 Objective-C 签名。

Try:

let selector = NSSelectorFromString("testWithValue:value2:")

和你的func必须标记为@objc or your class必须标记为@objcMembers.


如何获取选择器字符串:

注意:在 Swift 中创建选择器的首选方法是使用#selector正如@DavidBerry 在中所描述的他的回答 https://stackoverflow.com/a/52012903/1630618因为它为您提供了选择器的编译时检查。

如果你还需要NSSelectorFromString那么这是找出字符串的方法:

添加后@objc到您的函数并编译项目,单击相关项目Xcode 中左上角的图标ViewController.swift窗口并选择生成的界面-><ProjectName>-Swift.h。在那里你会发现你的func的 Objective-C 接口:

- (void)testWithValue:(NSInteger)value value2:(NSInteger)value2;

然后连接以冒号结尾的部分以创建选择器字符串:"testWithValue:value2:"

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

我们如何在 swift 中使用 NSSelectorFromString ? 的相关文章

随机推荐

  • 如何调整ggplot2中的标题位置

    这是代码 require ggplot2 require grid pdf a pdf png a png a lt qplot date unemploy data economics geom line opts title A b l
  • 为什么 Twitter API 返回错误的推文 ID?

    我使用 Twitter API 来检索用户主页时间线推文 我使用 json 响应格式 最近推文 ID 在 API 中只是 id 被重新调整错误 举个例子 通常它应该像这样返回 id 14057503720 示例来自twitter控制台 但是
  • ArrayDeque 和 LinkedBlockingDeque

    只是想知道为什么他们做了一个LinkedBlockingDeque而同一个非并发对应物是ArrayDeque它基于可调整大小的数组 LinkedBlockingQueue使用一组节点 例如LinkedList 尽管没有实施List 我知道可
  • 为什么 Sql Server 2000 上的 TSQL 对小数点的舍入不一致?

    我正在尝试计算美元金额的折扣百分比 在 50 的情况下 有时你会得到半分钱 我需要将其四舍五入到最接近的一分钱 在Sql中 我的计算如下 round retail 0 5 2 0 如果我采用以下值 我会得到不同的结果 4 39 2 49 不
  • 为什么在重新扫描期间参数替换没有被替换?

    考虑以下宏定义和调用 define x x 0 define y arg arg y x 此调用扩展为x 0 在 Visual C 2010 g 4 1 mcpp 2 7 2 和 Wave 上测试 Why 具体来说 为什么它不扩展到x 0
  • Spring-data-jdbc 插入 LocalDateTime 类型变量期间微秒精度丢失

    在我看来 当我们跑步时repository save entity 并且该实体有一个LocaldateTime映射到类型列的变量timestamp 6 spring data jdbc 或某些底层库 将列中插入的数据四舍五入到小数点后 3
  • jQuery 自动完成滚动问题

    我在用着Rails3 jquery 自动完成 https github com crowdint rails3 jquery autocomplete在我的应用程序中 我遇到了以下问题 如果您在输入字段中输入某些内容以便显示自动完成数据并在
  • 如何根据状态从父表和子表获取数据,其中外键每行具有不同的状态

    我有 2 个具有外键关系的表 情况是我有一个case and a case有很多revisions 和每个revision有自己的status 如果仅更改外键表状态的特定行 我想获取父表数据和子数据 Table Case id case n
  • 将多列列表拆分为单独的行

    我有一个像这样的数据框 df pd DataFrame key 1 2 3 4 col1 apple orange pineapple guava orange apple col2 087 799 681 078 816 018 key
  • 提交用于 Tensorflow 对象检测的 Google Cloud ML 训练作业时出现错误消息

    尝试提交 Tensorflow 对象检测任务的 Google Cloud ML 训练作业 我正在遵循官方指南 https github com tensorflow models blob master research object de
  • 浮点除以零的行为

    Consider include
  • 用 Python 编写网站

    我非常精通 PHP 但想尝试一些新的东西 我也了解一点Python 足以完成基础知识的基础知识 但还没有在网页设计类型的情况下使用过 我刚刚写了这个 它有效 usr bin python def main print Content typ
  • 无法验证模式并正确使用additionalProperties

    我正在尝试验证我的 JSON 架构并使用 extraProperties false 来确认没有其他属性 我的responseBody看起来像这样 id 1234567890987654 email email protected cdn
  • 如何检查 dom 元素是否可聚焦? [复制]

    这个问题在这里已经有答案了 许多 DOM 元素都是可聚焦的 带有 tabIndex 的 div 输入元素等 有没有比检查无数不同情况更简单的方法来检查元素是否可聚焦 有一个 jQuery 方法吗 从这里回答 翻译 哪些 HTML 元素可以获
  • 如何使用 TestNG 按名称和通配符运行类?

    我有很多带有 TestNG 测试的类 并且我有一个方便的命名约定 我想制作只运行以 Xyz 开头的所有类的测试套件 有什么办法可以做到这一点吗 我希望它的工作方式是使用像这样的通配符
  • React Native:约束 Animated.Value

    我正在制作一个 React Native 应用程序 场景是这样的 我希望用户能够平移视图 但不完全按照他想要的方式 我想约束视图被拖动时可以移动的距离由用户 我已经阅读了两者的文档PanResponder and AnimatedAPI 多
  • 在 UITableViewCell 中动态显示秒表计时器

    我想保存计时器值并从新的开始显示它UITableViewCell但我的问题是 我成功地能够在第一个单元格上显示秒表计时器 但是当我尝试在其中添加新单元格时UITableView所以我的计时器设置为第二个单元格 我无法定义如何让我的第一个计时
  • 处理ios设备方向

    我的 uiview 遇到问题 具体取决于设备方向 我遇到的主要问题是 UIDeviceOrientationFaceUp UIDeviceOrientationFaceDown 扰乱了我的视图 我只想支持纵向和横向 左右 因此如果设备改变方
  • MPI C++ 矩阵加法、函数参数和函数返回

    过去两年我一直在网上学习C 最后我需要深入研究MPI 我一直在搜索 stackoverflow 和互联网的其余部分 包括http people sc fsu edu jburkardt cpp src mpi mpi html http p
  • 我们如何在 swift 中使用 NSSelectorFromString ?

    我不明白为什么这总是失败 有什么帮助吗 显然 我不明白如何NSStringFromSelector作品 下面是我的代码 class ViewController UIViewController override func viewDidL