問題
1.?foreach操作
NSGenericException這個異常最容易出現(xiàn)在foreach操作中,在for in循環(huán)中如果修改所遍歷的數(shù)組,無論你是add或remove,都會出錯,比如
uncaught exception 'NSGenericException',reason:'*** Collection <__NSCFDictionary:0x7071100> was mutated while being enumerated.
意思是在枚舉時,集合數(shù)據(jù)被修改了。
原因就在這 "foreach",它的內(nèi)部遍歷使用了類似 Iterator進行迭代遍歷,一旦元素變動,之前的元素全部被失效,所以在foreach的循環(huán)當中,最好不要去進行元素的修改動作,若需要修改,循環(huán)改為for遍歷,由于內(nèi)部機制不同,不會產(chǎn)生修改后結(jié)果失效的問題。
2. 讀取數(shù)據(jù)文件失敗
uncaught exception'NSGenericException',reason:Could not open database file at /var/mobile/media/iTunes_Control/iTunes/MediaLibrary.sqlitedb
3. 其他
?uncaught exception'NSGenericException',reason:UIPopoverPresentationController () should have a non-nilsourceView or barButtonItem set before the presentation occurs.
解決方法
1. 對于第一種情況,集合數(shù)據(jù)遍歷元素時,若需要修改原元素,不要使用foreach,而使用for循環(huán)。
2. 對于第二種情況,檢查數(shù)據(jù)庫文件的有效性,包括是否存在。
3. 對于第三種情況,也是檢查參數(shù)的有效性