gpt4 book ai didi

objective-c - iOS NSMutableArray insertObject 索引越界

转载 作者:行者123 更新时间:2023-11-28 23:18:36 24 4
gpt4 key购买 nike

我是 Objective-C 编程的新手,很抱歉提出这个蹩脚的问题。

我正在尝试编写一些简单的应用程序,将存储在 NSMutableArray 中的单个数字添加到 TableView 中。

这是初始化代码和 addItem() 方法的代码:

- (void)viewDidLoad {
[super viewDidLoad];

self.title = @"Test App";
self.navigationItem.leftBarButtonItem = self.editButtonItem;

addButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemAdd target:self action:@selector(addItem)];
self.navigationItem.rightBarButtonItem = addButton;

self.itemArray = [[NSMutableArray alloc] initWithCapacity:100];
}

- (void)addItem {
[itemArray insertObject:@"1" atIndex:0];

NSIndexPath *indexPath = [NSIndexPath indexPathForRow:0 inSection:0];
[self.tableView insertRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationFade];
}

这一行

[itemArray insertObject:@"1" atIndex:0];

产生以下错误:

*** -[NSMutableArray objectAtIndex:]: index 0 beyond bounds for empty array'

为什么索引 0 超出了空数组的界限,我做错了什么???

UPD

正如 BP 所指出的,插入数组可能不适用于空数组,因此我添加了以下检查:

if ([itemArray count] == 0) {
[itemArray addObject:@"1"];
} else {
[itemArray insertObject:@"1" atIndex:0];
}

所以现在我得到了同样的错误信息,但是在行

[self.tableView insertRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationFade];

关于它可能有什么问题有什么想法吗?

最佳答案

您在 insertRowsAtIndexPaths:withRowAnimation 中进行的调用:应该在 beginUpdatesendUpdates 之间调用您的 tableView.

检查 TableView Programming Guide .

关于objective-c - iOS NSMutableArray insertObject 索引越界,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4359124/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com