
日志來(lái)源
前兩個(gè)月一直在做項(xiàng)目,在項(xiàng)目遇到過(guò)不少以前沒(méi)有遇到過(guò)的錯(cuò)誤日志,這里就整理出來(lái),分享一下那些年我掉進(jìn)去的坑.

全部日志
this class is not key value coding-compliant for the key XXX錯(cuò)誤
" this class is not key value coding-compliant for the key digitPressed.' "的錯(cuò)誤,經(jīng)過(guò)一番搜索和排查發(fā)現(xiàn)是自己在設(shè)置IBAction和IBOutlet時(shí)有多余的連線(xiàn),按下ctrl鍵檢查控件的連接將多余的連續(xù)刪除后程序正常運(yùn)行。
Unable to add App ID because the '10' App ID limit in '7' days has been exceeded.
字面意思是7天內(nèi)不能增加10個(gè)以上appid
我們都知道Xcode7增加了自動(dòng)生成iOS免費(fèi)調(diào)試證書(shū)的功能,但是問(wèn)題在于每次調(diào)試不同的iOS工程,不同的bundle id,都會(huì)占用一個(gè)appid,profile文件和證書(shū)文件,這就造成了,資源冗余,并且蘋(píng)果沒(méi)有提供管理這些證書(shū),appid的管理面板.
錯(cuò)誤原因:
最大的可能就是,蘋(píng)果的新規(guī)則,7天之內(nèi)不能創(chuàng)建超過(guò)10個(gè)appid
蘋(píng)果出問(wèn)題了 鎖定了大部分正常的開(kāi)發(fā)者賬號(hào)
換 bundle ID 造成的
自動(dòng)fix證書(shū)造成的。。建議手動(dòng)生成證書(shū)下載安裝
解決方案
如果都是新工程,使用一個(gè)固定的并且之前可以正常調(diào)試的bundle id,比如我的所有新建工程都是用的是org.skyfox.test
如果之前能調(diào)試換過(guò)bundle id不能調(diào)試,換回原有的bundle id即可
等7天再試。。雖然時(shí)間很長(zhǎng)
致電蘋(píng)果詢(xún)問(wèn)情況
建議
- iOS開(kāi)發(fā)者進(jìn)行Xcode7真機(jī)調(diào)試的時(shí)候,使用固定的bundle id進(jìn)行調(diào)試,比如我一直在使用org.skyfox.test進(jìn)行調(diào)試,也是對(duì)那些生成亂七八糟證書(shū),profile文件的一個(gè)技巧
7.3模擬器第一次啟動(dòng)出現(xiàn)的問(wèn)題

解決方案: xcode7.3,每次開(kāi)機(jī)第一次必定遇到這個(gè)情況,在運(yùn)行就正常了,
reason: '-[__NSCFNumber length]: unrecognized selector sent to instance 0x8b3c310’
這個(gè)問(wèn)題的原因是因?yàn)榻馕鰆son數(shù)據(jù)時(shí)候把整形當(dāng)成字符型存儲(chǔ)到model中取出來(lái)用的時(shí)候,直接會(huì)崩潰.
***** Terminating app due to uncaught exception ‘NSGenericException’, reason: ‘*** Collection <__NSArrayM: 0xb550c30> was mutated while being enumerated.’**
這個(gè)問(wèn)題的原因是因?yàn)槲覀円贿叡闅v數(shù)組一邊對(duì)數(shù)組中的元素進(jìn)行修改.導(dǎo)致的崩潰
問(wèn)題緣由:DTAssetProviderService could not start DTXConnection with Simulator 'iPhone 6s Plus'. Check the system log for errors

解決方案: 重啟模擬器,重啟Xcode,重啟mac機(jī)器
錯(cuò)誤日志:'Supported orientations has no common orientation with the application, and [UIAlertController shouldAutorotate] is returning YES'
圖片:

解決方案: 查看一下,項(xiàng)目是否支持,設(shè)置的方向,就可以解決了

錯(cuò)誤日志: -[__NSCFNumber rangeOfCharacterFromSet:]: unrecognized selector sent to instance

問(wèn)題分析及解決方案: 這個(gè)是由于傳的參數(shù)類(lèi)型不對(duì)所導(dǎo)致,這里其實(shí)是要傳NSString類(lèi)型,而其實(shí)返回的是NSArray類(lèi)型,這個(gè)錯(cuò)誤不會(huì)立即出發(fā),而是過(guò)一段時(shí)間再出發(fā),所以不好定位。
[cell setColumnTitle:[homeData objectAtIndex:row]];
錯(cuò)誤日志:'-[__NSArrayM objectForKeyedSubscript:]: unrecognized selector sent to instance 0x7fd0195d53d0'

問(wèn)題分析及解決方案:這個(gè)是因?yàn)槟阍谧鼋馕龅倪^(guò)程當(dāng)中,你寫(xiě)的代碼認(rèn)為 JSON 反序列化到對(duì)象 (詞典),但事實(shí)上它進(jìn)行反序列化到一個(gè)包含一個(gè)對(duì)象的數(shù)組。如下
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.
}
錯(cuò)誤日志:'-[__NSCFConstantString countByEnumeratingWithState:objects:count:]: unrecognized selector sent to instance 0x108e14470'

問(wèn)題分析及解決方案:一個(gè)空指針(null,或者在OC里是NSNull)發(fā)送了countByEnumeratingWithState:objects:count:;所以解決方法,判斷一下拿到的對(duì)象是不是NSNull類(lèi),如果是的話(huà)走另一套處理流程吧。
錯(cuò)誤:The operation couldn’t be completed. (LaunchServicesError error 0.)

解決辦法:
- 第1種方法.點(diǎn)擊當(dāng)前的模擬器,點(diǎn)擊IOS Simulator->Reset Content and Settings...->Reset,然后會(huì)重置模擬器,再編譯代碼可登錄模擬器成功
- 第2種方法.點(diǎn)擊Xcode->Product->Clean
- 第3種方法.將模擬器上的當(dāng)前運(yùn)行的app刪除,再重新加載(長(zhǎng)按模擬器的屏幕,點(diǎn)擊當(dāng)前報(bào)錯(cuò)的app 刪除)
- 第4種方法.在info.plist文件中修改bundle的版本號(hào)我遇到的問(wèn)題是上述幾種方法只能暫時(shí)解決,當(dāng)我一修改代碼時(shí),又重新報(bào)錯(cuò),然后我把我項(xiàng)目里的那個(gè)Resources(就是存儲(chǔ)圖片的那個(gè)包)給刪除了,然后重新建分組,但是資源包的名字不叫Resources,然后重新clean,結(jié)果問(wèn)題解決了,我想原因可能是我的Resources與Xcode里沖突了,然后Xcode不能打包app到模擬器上吧
webView錯(cuò)誤日志打印:Error Domain=WebKitErrorDomain Code=101 "(null)"
問(wèn)題原因:因?yàn)閁RL不能有中文,符號(hào),以及音標(biāo)
解決方法 :用UFT8進(jìn)行一下轉(zhuǎn)碼就好
urlStr = [urlStr stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
xCode出現(xiàn) The operation couldn't be completed.(LaunchServicesError error 0.)錯(cuò)誤修復(fù)
問(wèn)題的出現(xiàn)
今天在利用XCode開(kāi)發(fā)蘋(píng)果APP時(shí)想使用腳本來(lái)存儲(chǔ)一些語(yǔ)言文字信息,在完成環(huán)境配置和搭建以后調(diào)用Lua腳本成功。但是該Lua腳本把所有的內(nèi)容都包含在一起,不太符合文件獨(dú)立的要求,就把文件拆成了兩部分,通過(guò)include之類(lèi)的Lua關(guān)鍵字進(jìn)行關(guān)聯(lián)。調(diào)整完畢以后運(yùn)行調(diào)試,出現(xiàn)了Lua引擎無(wú)法搜索到被包含的腳本的錯(cuò)誤,于是就開(kāi)始折騰了,一會(huì)用相對(duì)包含關(guān)系包含文件,一會(huì)又用文件引用方式使用文件,最終問(wèn)題沒(méi)有得到解決但是出了一個(gè)新問(wèn)題

對(duì)比了工程版本修改記錄也沒(méi)發(fā)現(xiàn)問(wèn)題原因,求助了萬(wàn)能的百度(吐啊吐啊~~~),結(jié)果沒(méi)有找到答案。百無(wú)聊賴(lài)之下運(yùn)行了下Clean然后在Build下,問(wèn)題奇跡般的消失了?。?!OMG!
分析原因
回憶了自己折騰時(shí)的步驟,基本定位在資源文件加載方式變化上引起該問(wèn)題,導(dǎo)致編譯的緩存數(shù)據(jù)中含有殘留的無(wú)效數(shù)據(jù)。重新編譯以后清空了錯(cuò)誤數(shù)據(jù),使得程序能夠正常跑起來(lái)了。
invalid nib registered for identifier ((null)) - nib must contain exactly one top level object which must be a UITableViewCell instance