Swift学习笔记 - OC中关于NSClassFromString获取不到Swift类的解决方案

iOS开发笔记之九十——在OC项目中支持Swift *****阅读完此文,大概需要5分钟****** 这个过程不复杂,但是有些问题遇到了可能就会捣弄很久,特此输出此文,希望可以帮助大家快速解决相应的问题。 一、配置步骤 1、主项目中添加工程名-Bridging-Header.h 这一步可以如其他文章介绍的那样,先添加Test.swift然后,Xcode会提醒你添加对应的-Bridging-Header文件的。 2、配置工程 Build Settings设置Defines Module为Yes 设置Podfile,如下: use_modular 阅读详情

在OC和Swift混编的过程中发现在OC中通过NSClassFromString获取不到Swift中的类,调研了一下发现问题所在,下面是我的解决方案:

问题的发现过程

UIViewController *destinationVC = [[NSClassFromString(demoInfoModel.demoVCName) alloc] init];
        [self.navigationController pushViewController:destinationVC animated:YES];

在使用以上代码时发现,Swift的通过类名在OC中通过NSClassFromString获取不到这个类
,返回值为nil

问题的原因和解决方法

经过一番查找后发现是因为在OC中Swift类中的所有类的接口都转到了一个叫YourProduct_Example-swift.h的头文件中,YourProduct是你的工程名,其中的类名和方法都已经改变了,我们需要做的就行进入到这个头文件中,去找到对应的类名就行了,如下图所示:

这里写图片描述

红框里面的字符串就是你Swift里面转成OC后的类名,将之前的类名替换就行了,比如:

// 我之前的类名是WCLLoadingViewViewDemoVC
NSClassFromString(@"WCLLoadingViewViewDemoVC")
// 替换到OC中就是_TtC19CRAnimation_Example20WCLLoadingViewDemoVC
NSClassFromString(@"_TtC19CRAnimation_Example20WCLLoadingViewDemoVC")

通过以上步骤就能转换成功了

Swift 4.0学习之:动态获取命名空间 动态获取命名空间 前提知识点: 先说一下获取命名空间的作用,在Swift的项目中,打印当前类的时候,会发现,相比OC,类名前多了一个命名空间。因此,在调用NSClassFromString(“”)这类方法的时候,在类名前,必须加上命名空间. 。举个小例子如下: //项目名称:starProduct //要获取的类:AAAViewController let aaa = NSClassFro... 阅读详情

相关推荐

从2804云台电机到桌面机械臂:一个STM32/GD32玩家的FOC驱动踩坑全记录

本文详细记录了从2804云台电机到桌面机械臂的FOC驱动开发历程,涵盖了硬件选型、驱动方案优化、软件调试等关键环节。特别分享了L6234P驱动芯片的发热问题、AS5600编码器的I2C通信陷阱以及PID调参的实战经验,为DIY爱好者提供了宝贵的参考。

weixin_26897585的博客 482

当 Swift 遇上 NSClassFromString

请点击到我的博客查看 ^_^

light_bo的专栏 481

PyTorch模型生产部署:ONNX/Triton导出与高可用架构实战

机器学习模型部署本质是训练环境与生产环境之间的运行时契约建立过程,涉及序列化协议、推理引擎兼容性、动态批处理及资源隔离等核心问题。ONNX凭借标准化算子集和跨框架支持,成为平衡兼容性、性能与可维护性的首选导出格式;Triton Inference Server则通过原生多框架支持、动态batching和热加载能力,显著提升GPU利用率与服务SLA保障水平。在金融风控、电商推荐等高要求场景中,基于ONNX+Triton+K8s的分层架构可稳定支撑千级QPS与毫秒级P95延迟,同时满足模型热更新、可观测性与版本

weixin_33857679的博客 448

swift学习:NSClassFromString

swift学习:NSClasFromString@(NSClassFromString)[swift]NSClassFromString的作用是通过类名称获取类类型,objective-c和swift中都支持此用法,但在swift中稍有不同: objective-c :直接传入 类名 字符串 即可; objective-c ... Class controllerClass =

静心 1830

编译原理2024期末复习(面向做题,大题速学)【太原理工大学】

归约-归约”冲突就是在项目集规范族一个状态中两个。

m0_63181421的博客 1万+

DAZ STUDIO 快速渲染技巧

DAZ STUDIO 快速渲染技巧: 本文将向您展示几个快速渲染技巧。您将学习如何使您的Daz Iray渲染和照明在Daz工作室内更快。 当你有一个大场景,这可能需要很多小时进行渲染。 但是如果你想大幅度降低渲染时间呢?这篇文章的提示应该能让你达到这个目标。 首先,我们需要弄清楚一件事——没有“完美的环境或设置”这样的东西。是因为渲染设置是高度个性化和主观性的东西,这主要取决于场景和硬件。如果你有一个功能强大的计算机,你可以允许更多的低渲染时间,反之亦然。因此,一切都取决于您尝试渲染的对象和机器。

DAZSTUDIO的博客 9649

NSClassFromString returns nil的问题

原文链接 最近在对项目进行优化的时候,将以前一些功能类做静态库封装时,遇到一个百思不得其解的的问题 Class aClass = NSClassFromString(@"ClassName");死活都是空 代码在变为静态库前都是没有问题的,一开始以为是静态库需要将该类声明为公共头文件,结果还是没用(想想也是,动态生成的时候都不需要包含头文件,就算声明为公共头文件当然解决不了根本问题)。

LeeMagicKey的专栏 1985

域用户无法修改密码问题的解决方案

问题描述:加域的电脑无法更改密码,提示“无法更新密码,为新密码提供的值不符合字符域的长度、复杂度或历史要求”。 问题原因:域控制器中相关设置问题,主要如下图所示(如启用复杂性、最短期限和强制密码历史) 解决方案:在域控制器中更改对应的密码策略即可: ① 禁用复杂性要求 ② 最短使用期限改为0天 ③ 强制密码历史改为0 如果出现无法更改的情况,如下图箭头所指的图标所示 代表需要在域控制器的组策...

运维日记 3万+

swift中NSClassFromString正确的使用方法!

记录一下swift中NSClassFromString正确的使用方法 func pgcompanyTextFTapOne(_ sender:Any?){ //第一步:获取项目名称 let clsName = Bundle.main.infoDictionary!["CFBundleExecutable"] as? String print(c...

夏夏学长的学习札记 3725

SMETANA 安装使用教程

关于SMETANA的安装和简单使用信息

qq_44940977的博客 1170

HCIE-Datacom笔试题库

关于HCIE Datacom笔试考试题目整理!

坏坏-5的博客 612

Swift的NSClassFromString转换

在swift 中使用NSClassFromString 从string 转换到 对象,报了Segmentation fault: 11 错误。

培根芝士的专栏 1445

基于高频变压器的隔离式推挽栅极驱动电路

摘要:本文介绍了一种基于高频变压器的隔离式推挽栅极驱动电路,通过变压器实现电气隔离,为功率MOS管提供可靠驱动信号。电路包含输入侧PWM信号处理、变压器磁耦合隔离传输以及副边驱动逻辑等关键部分,利用电阻电容网络控制开关速度并防止误触发。该隔离驱动方案广泛应用于高压开关电源、新能源汽车电机控制器、光伏逆变器和工业变频器等需要高电压隔离及抗干扰能力的电力电子设备中,有效保障系统安全性和可靠性。

qq_37999850的博客 485

[swift] NSClassFromString 无法获得该类

在写OC的时候需要用 NSClassFromString(classStringName)获得一个类,如果存在就用这个类型来声明一个对象, 但是在swift的时候却往往得不到这个类,为什么呢? 从截图看 分析swift里面的对象还有该工程的名字CFBundleName 所以我们可以分析出只要加上该工程的名字就可以得到这个类了写法如下 extension NSObject...

anggengting9489的博客 411

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

swift 之NSClassFromString

今天在撸代码的时候, 发现了一个奇怪的问题,记录一下我们知道在 oc 中通过NSClassFromString创建类一直没什么问题, 但是今天在 swift 中遇到一个 crash 问题, 如下图:出现上面这个问题的代码是在 coolectionView 的点击代理方法中,如下图:解决办法: :由字符串转为类型的时候 如果类型是自定义的 需要在类型字符串前边加上你的项目的名字和”.”! 就像

岁月静好,善待时光。 803

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

NSClassFromString的使用

在iOS开发中,有时候也会用到类似反射的情况,就会使用到NSClassFromString,也就是通过字符串获取到类。 对于系统类而言,直接使用名称就可以获取到对应的类,如NSClassFromString("UIViewController")可以获取到UIViewController.Type,这样的话,就可以通过获取到的AnyClass对象,进行类型强转之后,调用对应的init方法,生成相应

iOS开发者-Ziank的总结 1761

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

UIDebuggingInformationOverlay在OC语法中使用

转载请注明出处:http://www.cnblogs.com/pretty-guy/p/6924882.html 你可以从这里下载demo 在微博看到几位大牛再说将UIDebuggingInformationOverlay加入豪华午餐,于是乎,自己去看看了原文介绍。因为博主使用的是Swift语法,而我还没怎么使用Swift(千万别笑我跟不上时代

weixin_33894640的博客 264

《swift踩过的坑》之“swift中使用NSClassFromString”

先看一个问题,当代码执行过 1 的,po targetvc 显然是有值出现的 然而执行下一行代码 2 之后 ,程序崩掉了,提示了一个错误:unexpectedly found nil while unwrapping an Optinal value 我们自定义的类USIndividualSettingVC明明已经存在,为什么在展开的时候却找不到,发现为空? swift跟

qq_18951479的博客 6328

Swift3.0 -- 使用字典创建子视图(NSClassFromString创建类的实例)

import UIKit //主控制器 class LYKMainViewController: UITabBarController { override func viewDidLoad() { super.viewDidLoad() setupChlidControllers(); } } /* extension

viiimaus的博客 1632

浅析Swift中两种反射

前言: Swift依托OC中的Runtime机制也可实现类似Java中的反射,只不过没有两者的反射功能强大。常见最多的可能就是Mirror,实际上NSCalssFromString也是一个较为隐蔽的反射方法。 Mirror: 作用: 动态地获取一个对象的属性、成员信息(不能获取方法,有点遗憾) 举例: NSClassFromString: 作用: 从字符串中加载一个对象实例(有点像Java中的数据库连接池ClassforName(“com.mysql.driver”))。 举例: 以UITableViewC

kicinio的博客 1690

iOS中通过字符串创建类(Swift)

开发中可能会经常遇到动态创建类的情况,有时候是根据服务器返回的字段进行处理,在OC中很简单,直接通过NSClassFromString方法即可,但是在Swift中,要加上命名空间才能够创建,具体如下:     1:命名空间的获取,这个要动态获取或者直接写死,直接写死的话,如果改了项目名字的话就不能用了,所以最好尽量动态获取,获取方法为:     let nameSpace = NSBundle

June的专栏 1567

swif 中如何使用NSClassFromString

跟OC中的使用有点区别。 let accessoryView:String = “XXX”         let Clz = NSClassFromString(accessoryView) as! 需要转换成的类型或者控制器.Type         let switcher:需要转换成的类型或者控制器 = Clz.init()        ok!

qq_18951479的博客 388

NSClassFromString

NSClassFromString是一个很有用的东西,尤其在进行iPhone toolchain的开发上。 正常来说, id myObj = [[NSClassFromString(@"MySpecialClass") alloc] init]; 和 id myObj = [[MySpecialClass alloc] init]; 是一样的。但是,如果你的程序中并不存在MySpecia

刘小皓的博客 328

swift通过字符串获取类型实例化对象问题

相信大家都碰到过轮播图跳转问题,公司需求变来变去,一会儿要跳网页一会儿要跳原生界面,跳网页不需要太多解释,跳原生事情就比较多了,我们公司就是这么蛋疼,但是需求下来了也没办法。之前解决方法都比较傻,基本就是写死那样固定跳哪几个原生界面,但是需求一直再变,程序也就自然要变。 于是和后台商量,直接传ios的控制器名称和安卓的活动名称来指定跳转哪个界面。基本上的意思就是通过后台传来的字符串转化成控制器类

u013976172的博客 2364

Swift与Objective-C交互

在同一个工程中是可以同时使用Swift和OC的,但不可以同时出现在同一个文件中。 OC调用Swift相关信息的方法 在***.m文件中导入工程名-Swift.h即可。 如工程名为ABC,则在需要使用Swift相关信息的.m文件中#import "ABC-Swift.h"即可。 Swift调用OC相关信息的方法 当在Swift/OC工程中创建OC/Swift文件时,会有提示,如下...

weixin_30535913的博客 86
上一篇: Xcode Missing file的解决方案
下一篇: iOS日常学习 - 每个Xcode开发者应该知道的七个使用技巧
W_C__L
W_C__L 领域专家: 移动开发技术领域 领域专家: 移动开发技术领域
博客等级 码龄14年 194粉丝 68原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值