首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

NSString包含一个数字,为​​什么它会崩溃我的App?

在iOS开发中,NSString 是一个字符串类,用于存储和处理文本数据。当你尝试将一个包含数字的字符串转换为数字类型(如 NSIntegerfloat)时,如果字符串中包含非数字字符,应用程序可能会崩溃。

为了避免这种情况,你可以使用 NSScannerNSCharacterSet 等方法来检查字符串中是否只包含数字。如果字符串中包含非数字字符,可以在转换前对其进行处理。

以下是一个简单的示例,展示了如何使用 NSScanner 检查字符串是否只包含数字:

代码语言:objective-c
复制
NSString *string = @"12345";
NSScanner *scanner = [NSScanner scannerWithString:string];
NSCharacterSet *nonDigits = [[NSCharacterSet decimalDigitCharacterSet] invertedSet];
BOOL onlyDigits = [scanner scanUpToCharactersFromSet:nonDigits] && [scanner isAtEnd];

if (onlyDigits) {
    // 字符串只包含数字,可以进行转换
    NSInteger integerValue = [string integerValue];
    // 或者
    float floatValue = [string floatValue];
} else {
    // 字符串包含非数字字符,不能进行转换
}

这样,即使字符串中包含非数字字符,你的应用程序也不会崩溃。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

开始一个 app 时,在想些什么

文|xiaoxiao image.png 几年工作下来,越发觉得,做好一个产品,有太多可以共用借鉴范式和模块,而每个模块,也大多有比较成熟外部解决方案。...把所知道一个产品(App为主,网站更多是辅助)从启动到成长所需要关注方方面面,归纳下来,相信自己或者你会用得上。 团队工具 在开始一个新产品之前,让一个新团队能够正常运转往往是一个更困难事。...曾经在银行时候(又来黑银行了),发现一个版本只有在开发完提交测试时候,产品才能装到手机上体验一下,而且其中开发做了任何修改,产品不知情,只能定期跑到开发桌面“让开发帮忙装一下新版本”,而那时候任何体验修正...记得以前在腾讯里,还要有专门设计助理来负责切图和标注。而其实这些事都应该交给 app 来做。...所以这部分并没有什么推荐产品提供,只是向各位建议要贯彻这样思路去架设内部环境和上线流程。 OA系统 又一个看起来毫不相关模块。聪明领导者应该意识到团队成员都是人,所以都会有各种行政上需求。

2K110

扒虫篇-崩溃日志解读及Crash收集

什么崩溃日志,从哪里能得它 iOS设备上应用闪退时,操作系统会生成一个崩溃报告,也叫崩溃日志,保存在设备上。 崩溃日志上有很多有用信息,包括应用是什么情况下闪退。....dSYM文件其实是一个目录,在子目录中包含一个16进制保存函数地址映射信息中转文件,所有Debugsymbols都在这个文件中(包括文件名、函数名、行号等),所以也称之为调试符号信息文件。...每一个.dSYM文件都有一个UUID,和.app文件中UUID对应,代表着是一个应用。而.dSYM文件中每一条崩溃信息也有一个单独UUID,用来和程序UUID进行校对。...解析步骤 在解析崩溃信息时候,首先在桌面上建立一个Crash文件夹,然后将.Crash、app、.dSYM、symbolicatecrash放在这个文件夹中。 ?...3.NSNul length 这个异常以可以归类第一种,也是给某一个对象发送了不识别的消息。

2.8K10
  • RunLoop总结:RunLoop应用场景(五)阻止App崩溃一次

    IOS程序异常crash捕获与拦截 (下面的Demo 就是在这部分代码上做了简化,以方便理解) 原理 iOS应用崩溃,常见崩溃信息有EXC_BAD_ACCESS、SIGABRT XXXXXXX,而这里分为两种情况...我们在收集App崩溃信息时,需要添加一个函数 NSSetUncaughtExceptionHandler(&HandleException),参数 是一个回调函数,在回调函数里获取到异常原因,当前堆栈信息等保存到...针对情况二,首先针对多种要捕获信号,设置好回调函数,然后也是在回调函数中获取RunLoop,然后拿到所有的Mode,手动运行一遍。 代码实现 第一步,创建了一个处理类,并添加一个单例方法。...第五步,写一段会导致崩溃代码 是在ViewController 中添加了一个点击事件,弄了一个数组越界Bug: - (void)touchesBegan:(NSSet *)touches...遇到数组越界,应用依然没崩溃 sunnyxx 称之为回光返照,为什么呢? 再一次点击视图,应用依然还是崩溃了,只能防止第一次崩溃测试了,确实是第二次应用崩溃,未能起死回生。

    1.6K31

    2022-04-23:给定一个长度4整数数组 cards 。你有 4 张卡片,每张卡片上都包含一个范围在 数字

    2022-04-23:给定一个长度4整数数组 cards 。你有 4 张卡片,每张卡片上都包含一个范围在 [1,9] 数字。...您应该使用运算符 ['+', '-', '*', '/'] 和括号 '(' 和 ')' 将这些卡片上数字排列成数学表达式,以获得值24。...每个运算都在两个数字之间。特别是,不能使用 “-” 作为一元运算符。 例如,如果 cards =[1,1,1,1] ,则表达式 “-1 -1 -1 -1” 是 不允许 。...你不能把数字串在一起 例如,如果 cards =[1,2,1,2] ,则表达式 “12 + 12” 无效。...如果可以得到这样表达式,其计算结果 24 ,则返回 true ,否则返回 false 。 输入: cards = [4, 1, 8, 7]。 输出: true。

    37630

    iOS Runtime 简单介绍,以及不同类 Method Swizzling

    这里限定了 NSString 只不过是告诉编译器,请把 testObject 当做一个 NSString 来检查,如果后面调用了非 NSString 方法,会产生警告。...testMethod 方法并没有崩溃并且方法已经成功添加了 4:动态交换方法(也叫 iOS 黑魔法,慎用) 没什么好例子,用一个网上说例子 (引用别人东西,懒得复制了,就截了图) 其实本质即使...另一种是自己创建一个 Tool 类里面放些常用工具方法其中包含了方法交换。...,这样一来左侧一堆文件,所以我用了第二种方法,但是在使用过程中出现一个问题,先看下代码结构 要 hook 是 ViewController 中 viewDidLoad 方法,建立了两个类一个是...(红色 add 修改) 因为 SystemClass 中本身不包含 customMethod 所以 add 一定是成功,也就是说会进入判断执行 replace 方法。

    59730

    iOS 开发:『Crash 防护系统』(二)KVO 防护

    KVO 允许一个对象监听另一个对象特定属性改变,并在改变时接收到事件。但是 KVO API 设计,个人觉得不是很合理。被观察者需要做工作太多,日常使用时稍不注意就会导致崩溃。...不可否认是,FBKVOController 我们开发提供了很大便利性。但是相对而言,这种方式对项目代码侵入性比较大,必须依靠编码规范来强制约束团队人员使用这种方式。...方案一:大白健康系统 -- iOS APP运行时 Crash 自动修复系统 首先为 NSObject 建立一个分类,利用 Method Swizzling,实现自定义 BMP_addObserver... KVO 防护实现 参考了这几个方法实现后,分别实现了一下之后,最终还是选择了 方案一、方案二 这两种方案实现思路。...---- 参考资料 大白健康系统 -- iOS APP运行时 Crash 自动修复系统 iOS-APP-运行时防 Crash 工具 XXShield 练就 - 茶茶小屋 iOS 中 crash 防护

    4.3K41

    AFNetWorking用法及缓存处理 原

    manager];   NSString * url = @"你请求地址";   //dic 数字典  [manager POST:url parameters:dic success:^(AFHTTPRequestOperation...我们再来探究一下,下载成功后,回调方法里参数到底是什么东西 success:^(AFHTTPRequestOperation *operation, id responseObject) 其中,第二个参数...,里面的成员非常多,其中包含了大部分我们需要信息,可以通过点语法取到,其中有输入输出流,错误信息,请求到Data数据,以及请求到字符串数据 responseString 我们可以通过 NSLog...几点注意: 1.关于崩溃urlnil 大多数这样原因是url中有特殊字符或者中文字符,AFNETWorking并没有做UTF8转码,需要: url = [url stringByAddingPercentEscapesUsingEncoding...,如果每次APP启动都进行请求,会消耗许多资源,并且有时候缓存处理,可以大大改善用户体验。

    59720

    AFNetWorking用法及缓存处理

    manager];   NSString * url = @"你请求地址";   //dic 数字典  [manager POST:url parameters:dic success:^(AFHTTPRequestOperation...我们再来探究一下,下载成功后,回调方法里参数到底是什么东西 success:^(AFHTTPRequestOperation *operation, id responseObject) 其中,第二个参数...,里面的成员非常多,其中包含了大部分我们需要信息,可以通过点语法取到,其中有输入输出流,错误信息,请求到Data数据,以及请求到字符串数据  responseString 我们可以通过 NSLog...几点注意: 1.关于崩溃urlnil 大多数这样原因是url中有特殊字符或者中文字符,AFNETWorking并没有做UTF8转码,需要: url = [url stringByAddingPercentEscapesUsingEncoding...,如果每次APP启动都进行请求,会消耗许多资源,并且有时候缓存处理,可以大大改善用户体验。

    49620

    iOS中Category

    什么是Category 在OC中,扩展一个方式有两种:继承与分类 可以在不修改原来类基础上,这个类扩充一些方法 一个庞大类可以分模块开发 Category格式 通过Category给某类添加方法...) User *user; @end ----------------------------- #import "APP.h" #import "User.h" @interface APP() @end @implementation APP -(void)doSomething{ NSLog(@"dosomething"); } @end 普通类型Category #import...firstName" withLastName:@"lastName"]; p.playGameName = @"football"; } Xcode会有警告 Xcode会有警告.png 运行程序会崩溃...运行程序会崩溃.png 如果分类中有和原类中同名方法,程序只会调用分类里方法,如果多个分类中都有和原类中同名方法,程序只会由编译器决定,编译器最后一个执行方法来响应 调用优先级(Category

    17710

    iOS APP运行时Crash自动修复系统

    现在Baymax迎来了它新功能:APP运行时Crash自动防护功能,app流程顺利运行保驾护航! 下面将详细介绍一下 APP运行时Crash自动修复系统 开发目的,设计原理以及使用方法。...是否又存在这样情形,你老板把大家都聚起来开了一个年初KPI目标制定会议,说到:“作为一个资深技术团队,app性能是我们技术团队首抓目标,其中很最要一项就是app崩溃率,去年我们app统计出来崩溃率是千分之五...能够自动在app运行时实时捕获导致app崩溃破环因子,然后通过特定技术手段去化解这些破坏因子,使app免于崩溃,照样可以继续正常运行,app持续运转保驾护航。...performSelector:@selector(someMethod:)]; 结果肯定会导致app崩溃,因为testObj是一个UIButton对象,而UIButton并没有实现 someMethod...时候,说明此时delegate并没有持有对应keypathobserver,即说明移除了一个不匹配观察者,此时如果再继续操作会导致app崩溃,所以应该及时中断流程,然后统计异常信息。

    3.3K1713

    如何让iOS推送播放语音?

    bundle目录访问也不是同一个,可以通过App Group共享数据。...提示音播放完毕后,将提示音调回原音量,大致意思是: 数字处理 数字转语音,采用zh-CNvoice后,数字播放方式是几万几千几百几十几这种,可采用数字后面拼接空格方式来处理;遍历内容一个字符串...,如果是数字,则拼接一个空格到后面,最后播放时数字就会一个个读出来。...,采用zh-CNvoice后,数字播放方式是几万几千几百几十几这种,故而采用数字后面拼接空格方式来处理;遍历内容一个字符串,如果是数字,则拼接一个空格到后面,最后播放时数字就会一个个读出来。...,哈哈哈,崩溃不。

    2.4K30

    这些年iOS AppStore 套壳开发上架从棋牌类到彩票类在到如今金融原油期货类App过程

    (由于字符限制,此为第一部分) 又一个马甲包出自我手,看到新闻感觉这样生态环境真的好吗?生活所迫啊。。。...给我一个机会 只想认真的做app而已 市面上App超过百分之三十 是套壳马甲包,不仅是小公司,更多是大公司-什么原因都有,规避版权、关键字、等等 整理这一段时间上架彩票App所经历问题和解决方案等心得经验...Store. 4.2 最低功能要求 App包含功能、内容和 UI,而不仅仅是一个经过重新包装网站。...如果 app 没有什么实用价值、毫无新意或者不太像是一个 app,那它就不适合出现在 App Store 中。如果 app 不能带来持久娱乐价值,或只是让人感到毛骨悚然,则无法获得批准。...去查看崩溃日志并不是特别方便--所以只能使用友盟移动分析,然后各种折腾,日志在命令行分析结果显示,在一个以为不会执行代码中执行了,然后崩溃了-如下图 而调用这个方法上级是 applicationDidBecomeActive

    3.4K31

    手把手教你使用Bugly收集线上崩溃信息

    我们都知道,app在上线之后,用户如果操作我们app导致崩溃、错误信息,我们是无法获知,这时候,就需要一款工具,来告诉我们现在app在线上运行情况; 现在线上信息收集工具有 友盟、极光等,这里要用到是第三款常用工具...,接下去是重点了 ---- 如何获取到app崩溃信息 - (void)clickCrashBtn{ //声明一个方法,按钮一调用,就会crash NSString *value = nil...,比如登录信息,手机号等,只要在app中可以拿得到,其实都可以让bugly捕捉; 这里简单讲下,如果设置捕捉非crash信息,以http 请求错误例 ?...11.png 如上图日志等级分五种,根据自己需求来定 从Error 到 Verbose状态,逐级递减, 比如这里我们http请求错误情况,就用到了error收集,如果要收集用户信息,就会用LogInfo...warn 和 warn等级以上日志才会收集 这里我们可以看到,从上往下递减,在warn之上,只有一个Error,所以如果设置 BuglyLogLevelWarn,只会收集 warn && error

    5.8K30

    iOS 开发:『Crash 防护系统』(一)Unrecognized Selector

    这套系统采用 AOP(面向切面编程)设计思想,利用 Objective-C语言运行时机制,在不侵入原有项目代码基础之上,通过在 APP 运行时阶段对崩溃因素拦截和处理,使得 APP 能够持续稳定正常运行...Crash 防护系统开篇 APP 崩溃问题,一直以来都是开发过程中重中之重问题。日常开发阶段崩溃,发现后还能够立即处理。...但是如果能够利用一些语言机制和系统方法,设计一套防护系统,使之能够有效降低 APP 崩溃率,那么不仅 APP 稳定性得到了保障,而且最重要是可以减少不必要加班。...Defender 也是比较喜欢车之一。 不过呢,这不重要。。。就是这个项目起了个花里胡哨名字,并给这个名字赋予了一些无聊意义。。。 ---- 2....,就会因为找不到对应方法实现,从而导致 APP 崩溃

    2.1K30

    iOS开发·KVC:字典转模型,防止因本地未定义字段(后台字段与本地字符串名不一致)导致数据转换过程中奔溃

    建模 假设网络请求图片信息并在APP界面上展示,这里新建一个图书图片模型,id表示图书ID,imgUrl是图书封面地址(可以用SDWebImage加载该图),nameStr时图书名字,introduceStr...alloc] init]; [bookModel setValuesForKeysWithDictionary:dict]; return bookModel; } @end 当然,你也可以一个一个每个属性分别写...BookModel.m -(void)setValue:(id)value forUndefinedKey:(NSString *)key{ //空什么都不写都可以 } 3....示例 假设,APP本地里面用plist写了一个字典数组,然后写一个CustomerListModel模型。...-(void)setValue:(id)value forUndefinedKey:(NSString *)key{ //空什么都不写都可以 //return nil; } 2、如果服务返回字符串有系统默认不能使用关键字

    1.5K20
    领券