日志來源
前兩個月一直在做項目,在項目遇到過不少以前沒有遇到過的錯誤日志,這里就整理出來,分享一下那些年我掉進(jìn)去的坑.
全部日志
this class is not key value coding-compliant for the key XXX錯誤
" this class is not key value coding-compliant for the key digitPressed.' "的錯誤若治,經(jīng)過一番搜索和排查發(fā)現(xiàn)是自己在設(shè)置IBAction和IBOutlet時有多余的連線,按下ctrl鍵檢查控件的連接將多余的連續(xù)刪除后程序正常運行端幼。
Unable to add App ID because the '10' App ID limit in '7' days has been exceeded.
字面意思是7天內(nèi)不能增加10個以上appid
我們都知道Xcode7增加了自動生成iOS免費調(diào)試證書的功能,但是問題在于每次調(diào)試不同的iOS工程静暂,不同的bundle id谱秽,都會占用一個appid洽蛀,profile文件和證書文件疟赊,這就造成了郊供,資源冗余近哟,并且蘋果沒有提供管理這些證書驮审,appid的管理面板.
錯誤原因:
最大的可能就是吉执,蘋果的新規(guī)則,7天之內(nèi)不能創(chuàng)建超過10個appid
蘋果出問題了 鎖定了大部分正常的開發(fā)者賬號
換 bundle ID 造成的
自動fix證書造成的戳玫。。建議手動生成證書下載安裝
解決方案
如果都是新工程咕宿,使用一個固定的并且之前可以正常調(diào)試的bundle id,比如我的所有新建工程都是用的是org.skyfox.test
如果之前能調(diào)試換過bundle id不能調(diào)試,換回原有的bundle id即可
等7天再試币绩。。雖然時間很長
致電蘋果詢問情況
建議
- iOS開發(fā)者進(jìn)行Xcode7真機調(diào)試的時候缆镣,使用固定的bundle id進(jìn)行調(diào)試,比如我一直在使用org.skyfox.test進(jìn)行調(diào)試董瞻,也是對那些生成亂七八糟證書,profile文件的一個技巧
7.3模擬器第一次啟動出現(xiàn)的問題
解決方案: xcode7.3,每次開機第一次必定遇到這個情況,在運行就正常了,
reason: '-[__NSCFNumber length]: unrecognized selector sent to instance 0x8b3c310’
這個問題的原因是因為解析json數(shù)據(jù)時候把整形當(dāng)成字符型存儲到model中取出來用的時候,直接會崩潰.
***** Terminating app due to uncaught exception ‘NSGenericException’, reason: ‘*** Collection <__NSArrayM: 0xb550c30> was mutated while being enumerated.’**
這個問題的原因是因為我們一邊遍歷數(shù)組一邊對數(shù)組中的元素進(jìn)行修改.導(dǎo)致的崩潰
問題緣由: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'
圖片:
解決方案: 查看一下,項目是否支持,設(shè)置的方向,就可以解決了
錯誤日志: -[__NSCFNumber rangeOfCharacterFromSet:]: unrecognized selector sent to instance
問題分析及解決方案: 這個是由于傳的參數(shù)類型不對所導(dǎo)致煞聪,這里其實是要傳NSString類型逝慧,而其實返回的是NSArray類型昔脯,這個錯誤不會立即出發(fā)笛臣,而是過一段時間再出發(fā)云稚,所以不好定位沈堡。
[cell setColumnTitle:[homeData objectAtIndex:row]];
錯誤日志:'-[__NSArrayM objectForKeyedSubscript:]: unrecognized selector sent to instance 0x7fd0195d53d0'
問題分析及解決方案:這個是因為你在做解析的過程當(dāng)中,你寫的代碼認(rèn)為 JSON 反序列化到對象 (詞典),但事實上它進(jìn)行反序列化到一個包含一個對象的數(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.
}
錯誤日志:'-[__NSCFConstantString countByEnumeratingWithState:objects:count:]: unrecognized selector sent to instance 0x108e14470'
問題分析及解決方案:一個空指針(null僧免,或者在OC里是NSNull)發(fā)送了countByEnumeratingWithState:objects:count:;所以解決方法,判斷一下拿到的對象是不是NSNull類懂衩,如果是的話走另一套處理流程吧。
錯誤:The operation couldn’t be completed. (LaunchServicesError error 0.)
解決辦法:
- 第1種方法.點擊當(dāng)前的模擬器浊洞,點擊IOS Simulator->Reset Content and Settings...->Reset,然后會重置模擬器沛申,再編譯代碼可登錄模擬器成功
- 第2種方法.點擊Xcode->Product->Clean
- 第3種方法.將模擬器上的當(dāng)前運行的app刪除劣领,再重新加載(長按模擬器的屏幕铁材,點擊當(dāng)前報錯的app 刪除)
- 第4種方法.在info.plist文件中修改bundle的版本號我遇到的問題是上述幾種方法只能暫時解決奕锌,當(dāng)我一修改代碼時,又重新報錯村生,然后我把我項目里的那個Resources(就是存儲圖片的那個包)給刪除了,然后重新建分組趁桃,但是資源包的名字不叫Resources,然后重新clean,結(jié)果問題解決了,我想原因可能是我的Resources與Xcode里沖突了卫病,然后Xcode不能打包app到模擬器上吧
webView錯誤日志打印:Error Domain=WebKitErrorDomain Code=101 "(null)"
問題原因:因為URL不能有中文,符號,以及音標(biāo)
解決方法 :用UFT8進(jìn)行一下轉(zhuǎn)碼就好
urlStr = [urlStr stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
xCode出現(xiàn) The operation couldn't be completed.(LaunchServicesError error 0.)錯誤修復(fù)
問題的出現(xiàn)
今天在利用XCode開發(fā)蘋果APP時想使用腳本來存儲一些語言文字信息,在完成環(huán)境配置和搭建以后調(diào)用Lua腳本成功蟀苛。但是該Lua腳本把所有的內(nèi)容都包含在一起益咬,不太符合文件獨立的要求帜平,就把文件拆成了兩部分幽告,通過include之類的Lua關(guān)鍵字進(jìn)行關(guān)聯(lián)裆甩。調(diào)整完畢以后運行調(diào)試,出現(xiàn)了Lua引擎無法搜索到被包含的腳本的錯誤嗤栓,于是就開始折騰了冻河,一會用相對包含關(guān)系包含文件茉帅,一會又用文件引用方式使用文件芋绸,最終問題沒有得到解決但是出了一個新問題
對比了工程版本修改記錄也沒發(fā)現(xiàn)問題原因担敌,求助了萬能的百度(吐啊吐啊~~~)廷蓉,結(jié)果沒有找到答案全封。百無聊賴之下運行了下Clean然后在Build下桃犬,問題奇跡般的消失了I层病T芟尽土匀!OMG形用!
分析原因
回憶了自己折騰時的步驟就轧,基本定位在資源文件加載方式變化上引起該問題,導(dǎo)致編譯的緩存數(shù)據(jù)中含有殘留的無效數(shù)據(jù)妒御。重新編譯以后清空了錯誤數(shù)據(jù)解愤,使得程序能夠正常跑起來了乎莉。
invalid nib registered for identifier ((null)) - nib must contain exactly one top level object which must be a UITableViewCell instance