问题
1. foreach操作
NSGenericException这个异常最容易出现在foreach操作中,在for in循环中如果修改所遍历的数组,无论你是add或remove,都会出错,比如
uncaught exception 'NSGenericException',reason:'*** Collection <__NSCFDictionary:0x7071100> was mutated while being enumerated.
意思是在枚举时,集合数据被修改了。
原因就在这 "foreach",它的内部遍历使用了类似 Iterator进行迭代遍历,一旦元素变动,之前的元素全部被失效,所以在foreach的循环当中,最好不要去进行元素的修改动作,若需要修改,循环改为for遍历,由于内部机制不同,不会产生修改后结果失效的问题。
2. 读取数据文件失败
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. 对于第一种情况,集合数据遍历元素时,若需要修改原元素,不要使用foreach,而使用for循环。
2. 对于第二种情况,检查数据库文件的有效性,包括是否存在。
3. 对于第三种情况,也是检查参数的有效性