请参阅下面的更新。
我正在编写一个调整并且正在使用 AppList。我正在关注聚光灯并为所有已安装的应用程序创建一个表格。我正在尝试使用 dataSource 来获取信息(显示标识符等)。问题是如果定义了 dataSource ......我收到以下错误:
SpringBoard[1622] : *** Assertion failure in -[NSIndexPath row],/SourceCache/UIKit/UIKit-2380.17/UITableViewSupport.m:2680
SpringBoard[1622] <警告>: ***** AltKeyboard 未捕获异常:与 UITableView 一起使用的索引路径无效。传递给 TableView 的索引路径必须恰好包含两个指定节和行的索引。如果可能,请使用 UITableView.h 中 NSIndexPath 上的类别。 *****
或
SpringBoard[1890] <警告>: ***** AltKeyboard Uncaught Exception: *** -[__NSArrayM objectAtIndex:]: index 2 beyond bounds [0 .. 1] *****
SpringBoard [1890] <错误>:***由于未捕获的异常'NSRangeException'而终止应用程序,原因:'*** - [__NSArrayM objectAtIndex:]:索引2超出范围[0 .. 1]'
*** 首先抛出调用堆栈:
如果未定义 dataSource 并且我使用假数据(测试名称),则可以正常生成表。当我打印数据源时,里面只有两个项目。
IRC 上的 Ryan Petrich 似乎暗示我做的一切都完全错误,但在那之后并没有太大帮助。也许我正在错误地解决这个问题?
代码:http://pastebin.ca/2457626
存储库:https://github.com/twodayslate/ListLauncher
编辑/更新!
dataSource 给我带来了问题。它没有获取相同数量的应用程序,因此我收到了索引错误等。我有 200 多个应用程序,但 dataSource 只获取 2 个。
以下代码没有给出错误,但只显示 2 项:http://pastebin.ca/2458961
编辑!
我改变了它,所以我只使用 ALApplicationList。我能够列出所有应用程序。但是,当我尝试滚动表格时,它会崩溃。排序和创建列表真的很慢,所以我相信这可能会导致问题。我不是 obj-c 的专家,所以我确信有比我正在做的更好的方法。 http://pastebin.ca/2459318
Best Answer-推荐答案 strong>
你的问题是双重的。首先,UITableView 期望得到包含行和节的索引路径,而您只提供了一行。其次,您不能期望未经检查的数组访问 100% 成功,因此边界检查您可能使用的任何访问调用。在代码中的 iVar 分配中使用一些保留也没有什么坏处,除非您不需要保留对它的引用(但看起来确实如此)。
关于ios - 使用 AppList 数据源的 -[NSIndexPath 行] 中的断言失败,我们在Stack Overflow上找到一个类似的问题:
https://stackoverflow.com/questions/18972962/
|