iOS bug修复iOS 遇到的问题开发技能

华山论剑之iOS错误日志

2016-08-22  本文已影响726人  神经骚栋

日志来源


前两个月一直在做项目,在项目遇到过不少以前没有遇到过的错误日志,这里就整理出来,分享一下那些年我掉进去的坑.

全部日志


this class is not key value coding-compliant for the key XXX错误

" this class is not key value coding-compliant for the key digitPressed.' "的错误,经过一番搜索和排查发现是自己在设置IBAction和IBOutlet时有多余的连线,按下ctrl键检查控件的连接将多余的连续删除后程序正常运行。


Unable to add App ID because the '10' App ID limit in '7' days has been exceeded.

字面意思是7天内不能增加10个以上appid

我们都知道Xcode7增加了自动生成iOS免费调试证书的功能,但是问题在于每次调试不同的iOS工程,不同的bundle id,都会占用一个appid,profile文件和证书文件,这就造成了,资源冗余,并且苹果没有提供管理这些证书,appid的管理面板.

错误原因:
解决方案
建议

7.3模拟器第一次启动出现的问题
解决方案: xcode7.3,每次开机第一次必定遇到这个情况,在运行就正常了,

reason: '-[__NSCFNumber length]: unrecognized selector sent to instance 0x8b3c310’
这个问题的原因是因为解析json数据时候把整形当成字符型存储到model中取出来用的时候,直接会崩溃.

***** Terminating app due to uncaught exception ‘NSGenericException’, reason: ‘*** Collection <__NSArrayM: 0xb550c30> was mutated while being enumerated.’**
这个问题的原因是因为我们一边遍历数组一边对数组中的元素进行修改.导致的崩溃

问题缘由:DTAssetProviderService could not start DTXConnection with Simulator 'iPhone 6s Plus'. Check the system log for errors
图片说明
解决方案: 重启模拟器,重启Xcode,重启mac机器

错误日志:'Supported orientations has no common orientation with the application, and [UIAlertController shouldAutorotate] is returning YES'
图片:
解决方案: 查看一下,项目是否支持,设置的方向,就可以解决了
解决方案示意.png
错误日志: -[__NSCFNumber rangeOfCharacterFromSet:]: unrecognized selector sent to instance
错误日志
问题分析及解决方案: 这个是由于传的参数类型不对所导致,这里其实是要传NSString类型,而其实返回的是NSArray类型,这个错误不会立即出发,而是过一段时间再出发,所以不好定位。
[cell setColumnTitle:[homeData objectAtIndex:row]];

错误日志:'-[__NSArrayM objectForKeyedSubscript:]: unrecognized selector sent to instance 0x7fd0195d53d0'
错误日志
问题分析及解决方案:这个是因为你在做解析的过程当中,你写的代码认为 JSON 反序列化到对象 (词典),但事实上它进行反序列化到一个包含一个对象的数组。如下
   NSMutableArray *topLevelArray = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers error:nil];    
 
    NSDictionary *dict = topLevelArray[0];

如果您想要检查你的什么,你可以使用 *isKindOfClass: *像这样:
id jso = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers error:nil];
if (jso == nil) {
    // Error.  You should probably have passed an NSError ** as the error
    // argument so you could log it.
} else if ([jso isKindOfClass:[NSArray class]]) {
    NSArray *array = jso;
    // process array elements
} else if ([jso isKindOfClass:[NSDictionary class]]) {
    NSDictionary *dict = jso;
    // process dictionary elements
} else {
    // Shouldn't happen unless you use the NSJSONReadingAllowFragments flag.
}


错误日志:'-[__NSCFConstantString countByEnumeratingWithState:objects:count:]: unrecognized selector sent to instance 0x108e14470'
错误日志
问题分析及解决方案:一个空指针(null,或者在OC里是NSNull)发送了countByEnumeratingWithState:objects:count:;所以解决方法,判断一下拿到的对象是不是NSNull类,如果是的话走另一套处理流程吧。

错误:The operation couldn’t be completed. (LaunchServicesError error 0.)
图片
解决办法:

webView错误日志打印:Error Domain=WebKitErrorDomain Code=101 "(null)"
问题原因:因为URL不能有中文,符号,以及音标
解决方法 :用UFT8进行一下转码就好
urlStr = [urlStr stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];  

xCode出现 The operation couldn't be completed.(LaunchServicesError error 0.)错误修复
问题的出现

今天在利用XCode开发苹果APP时想使用脚本来存储一些语言文字信息,在完成环境配置和搭建以后调用Lua脚本成功。但是该Lua脚本把所有的内容都包含在一起,不太符合文件独立的要求,就把文件拆成了两部分,通过include之类的Lua关键字进行关联。调整完毕以后运行调试,出现了Lua引擎无法搜索到被包含的脚本的错误,于是就开始折腾了,一会用相对包含关系包含文件,一会又用文件引用方式使用文件,最终问题没有得到解决但是出了一个新问题

对比了工程版本修改记录也没发现问题原因,求助了万能的百度(吐啊吐啊~~~),结果没有找到答案。百无聊赖之下运行了下Clean然后在Build下,问题奇迹般的消失了!!!OMG!

分析原因

回忆了自己折腾时的步骤,基本定位在资源文件加载方式变化上引起该问题,导致编译的缓存数据中含有残留的无效数据。重新编译以后清空了错误数据,使得程序能够正常跑起来了。


invalid nib registered for identifier ((null)) - nib must contain exactly one top level object which must be a UITableViewCell instance

大致意思就是 这个nib的注册不合法, 这个nib必须只保含一个 object 并且是UITableViewCell 的实例,也就说你创建的cell的xib文件中有可能不单单只有cell,可能不小心拖了一个控件到xib上,都会出现问题,问题解决办法就是把多余的控件删除就好了.

结束


两月三项目,基本所有的奇葩问题都在这了, 今天就说到这了,谢谢查看.
上一篇下一篇

猜你喜欢

热点阅读