将对象添加到CPArray时引发CPRangeException



在我的卡布奇诺应用程序中,我通过JSON从RoR后端读取并将结果放入列表中。当应用程序第一次加载时,一切都很好,但当我编辑项目(并将编辑写入数据库)时,刷新项目列表时会产生错误。

错误为CPRangeException: -[_CPJavaScriptArray objectAtIndex:]: index (-1) beyond bounds (3)

即使我在没有进行任何实际更改的情况下编辑项目,也会出现此错误。应用程序接收的JSON字符串在这种情况下保持完全相同,没有添加或删除任何项,因此不应将数组写入界外。

这是我的代码:

- (void)connection:(CPRURLConnection)connection didReceiveData:(CPString)data
{
    if(connection === listConnection)
    {        
        var results = JSON.parse(data) ;
        var posts = [Post initFromJSONObjects:results];
        [postListView setContent:posts] ;
        // My error occurs at the above line
        [postListView setSelectionIndexes:[[CPIndexSet alloc] initWithIndex:0]] ;
    }
 }

我不确定这是我的代码错误,还是与卡布奇诺框架不一致。有人知道我能做些什么来解决这个问题吗?

代码的其余部分可以在这里找到

在设置posts之前,您可能应该简单地记录它中的内容。CPLog.info('posts: ' + posts);应该有效,或者console.log(posts)。接下来,您可以在Chrome或Safari中设置一个"中断未捕获的异常"调试点,以在您看到的实际错误处停止。确保使用index-debug.html运行应用程序,以便获得完整的方法名称。然后,查看调用堆栈以了解哪里出了问题应该很容易。这里有很多关于调试卡布奇诺应用程序的信息。

相关内容

  • 没有找到相关文章

最新更新