首页
学习
活动
专区
工具
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进制的保存函数地址映射信息的中转文件,所有Debug的symbols都在这个文件中(包括文件名、函数名、行号等),所以也称之为调试符号信息文件。...每一个.dSYM文件都有一个UUID,和.app文件中的UUID对应,代表着是一个应用。而.dSYM文件中每一条崩溃信息也有一个单独的UUID,用来和程序的UUID进行校对。...解析步骤 我在解析崩溃信息的时候,首先在桌面上建立一个Crash文件夹,然后将.Crash、app、.dSYM、symbolicatecrash放在这个文件夹中。 ?...3.NSNul length 这个异常以可以归类为第一种,也是给某一个对象发送了不识别的消息。

2.9K10
  • 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。

    38430

    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.7K31

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

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

    61130

    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.4K41

    AFNetWorking用法及缓存处理 原

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

    60120

    AFNetWorking用法及缓存处理

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

    51020

    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

    18110

    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并没有持有对应keypath的observer,即说明移除了一个不匹配的观察者,此时如果再继续操作会导致app崩溃,所以应该及时中断流程,然后统计异常信息。

    3.4K1713

    如何让iOS推送播放语音?

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

    2.5K30

    这些年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

    6K30

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

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

    2.1K30

    番外特别篇之 为什么我不建议你直接使用UIImage传值?--从一个诡异的相册九图连读崩溃bug谈起

    关于"番外特别篇" 所谓"番外特别篇",就是系列文章更新期间内,随机插入的一篇文章.目前我正在更新的系列文章是 实现iOS图片等资源文件的热更新化.但是,这两天,被一个自己App中诡异的相册读取的Bug...raw=true 当BOSS刚好是一个摄影爱好者 在大多数情况下,是很少有用户触发这个问题的,但是BOSS是一个摄影爱好者,手机里有许多高像素图,一天他想往自己公司的App上传分享几张图片时,他竟然没法把一次性地从相册选取九张图...我能描述的,可能仅仅是我处理这个问题的一个相对的完整脑洞过程.部分分析过程间,明显不是有逻辑性的.越是诡异的问题,越是不能循规蹈矩,要时刻尝试去问自己最可能地问题是什么,而不是沿着一条路,一条道走到黑....1.排除通用逻辑问题 Coder有些许高傲,有时候是有利于自己更冷静地处理问题的.稍微不自信点的童鞋,可能就会怀疑:我代码是不是有什么特殊的临界判断没有加?...我真没想到,一个UIImage对象,竟然会二次引起高内存占用.最终的解决方法,就是在前一个页面传递 NSData数组,在赋值处,再使用imageWithData:转换为 UIImage.这样,内存使用基本没什么起伏

    1.7K70

    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
    领券