CPRangeException выдается, когда объекты добавляются в CPArray - PullRequest
0 голосов
/ 29 января 2012

В моем приложении для капучино я читаю из бэкэнда RoR через JSON и помещаю результаты в список.Когда приложение впервые загружается, все в порядке, но когда я редактирую элемент (и записываю изменение в базу данных), при обновлении списка элементов возникает ошибка.

Ошибка: 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]] ;
    }
 }

Я не уверен, является ли это ошибкой в ​​моем коде, или это какая-то несовместимость со структурой капучино.Кто-нибудь знает, что я могу сделать, чтобы это исправить?

Остальной код можно найти здесь

1 Ответ

1 голос
/ 29 января 2012

Вам, вероятно, следует просто войти в систему, что находится в posts, перед тем как его установить.CPLog.info('posts: ' + posts); должно работать или console.log(posts).Затем вы можете установить в Chrome или Safari точку отладки «прерывание по неперехваченному исключению», чтобы остановить текущую ошибку, которую вы видите.Убедитесь, что вы запускаете свое приложение, используя index-debug.html, чтобы получить полные имена методов.Тогда должно быть легко посмотреть на стек вызовов, чтобы увидеть, где что-то идет не так.Здесь много информации об отладке приложения Cappuccino здесь .

...