objective-c - NSMutableArray 计数总是返回零

标签 objective-c cocoa

我确定我在做一些愚蠢的事情,但这让我发疯。

我试图遍历数据库结果,从这些结果创建对象,并将对象添加到 NSMutableArray。我已经通过 NSLog 调用验证数据正在从数据库中正确读取并复制到对象,但是 NSMutableArray 的计数总是 返回 0。

这是代码的本质:

while ([rs next]) {

    Kana *htemp = [Kana alloc];

    htemp.content = [rs stringForColumn:@"hiragana"];
    [hiragana addObject:htemp];

}
NSLog(@"Hiragana contains %d objects", [hiragana count]);

假名派生自NSObject,平假名是NSMutableArray的一个实例。

我确定这是菜鸟犯的错误,我希望有人能纠正我。 TIA! :)

最佳答案

从您发布的代码来看,我的猜测是您可能没有正确分配数组。创建对象时,还需要对其进行初始化。因此,这:

Kana *htemp = [Kana alloc];

应该是:

Kata *temp = [[Kana alloc] init];

所有对象都需要以这种方式初始化。因此,如果我是正确的并且您还没有初始化数组,那么您的创建需要从这里开始:

NSMutableArray *hiragana = [NSMutableArray alloc];

为此:

NSMutableArray *hiragana = [[NSMutableArray alloc] init];

出于优化的原因,如果您知道可以容纳多少个对象,您可能还应该指定一个初始容量:

[[NSMutableArray alloc] initWithCapacity:someNumber];

关于objective-c - NSMutableArray 计数总是返回零,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/633699/

相关文章:

objective-c - 发送到 Core Data 的无法识别的选择器导致应用程序崩溃

ios - 从 UIPickerView 设置 UITextField 中当前列的标题?

objective-c - 如何使用 ios objective c 构建 webrtc

objective-c - 如果按下关闭按钮,则终止 Mac OSX 应用程序

objective-c - NSView - 绘制 2 色棋子

iphone - 我怎样才能将加密数据插入sqlite。我在插入加密数据时遇到错误

objective-c - NSUndoManager setActionName : doesn't change menu text

cocoa - 拖放粘贴板数据

swift - 如何为 NSTextField 的 textColor 设置动画?

objective-c - 使用新服务项目更新 OSX 右键单击​​上下文菜单