You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

将double类型变量赋值给可变数组self.items时出现赋值失败问题

问题分析与解决

核心原因:数组未初始化

调试器显示self.items为NULL,说明这个数组从未被初始化。Objective-C中,未赋值的对象指针默认是nil(等价于NULL),调用addObject:方法不会报错,但完全不会有添加元素的效果。

修复步骤

  1. 初始化可变数组
    你需要确保self.items是NSMutableArray(只有可变数组才能添加元素),在类的初始化方法(比如init)或者第一次调用pushItem:前,添加初始化代码:

    self.items = [[NSMutableArray alloc] init];
    
  2. 修正对象与基本类型的比较错误
    代码里if (self.items.lastObject == 0)是错误的:lastObject返回的是NSNumber对象,不能直接和基本类型0比较,应该提取其包装的数值后再判断:

    if ([[self.items lastObject] doubleValue] == 0)
    
  3. 清理冗余逻辑
    你已经在方法开头执行了[self.items addObject:[[NSNumber alloc]initWithDouble:number]];,注释里的“需将变量number添加至self.items数组”属于重复操作,要么删除注释,要么调整逻辑(比如只有满足条件时才添加)。

修正后的完整代码示例

// 先确保在类的初始化方法里初始化数组
- (instancetype)init {
    self = [super init];
    if (self) {
        self.items = [[NSMutableArray alloc] init];
    }
    return self;
}

-(void)pushItem:(double)number{
    [self.items addObject:[[NSNumber alloc]initWithDouble:number]];

    if ([[self.items lastObject] doubleValue] == 0)
    {
        // 这里写你需要执行的其他逻辑,不需要再重复添加number到数组
    }
}

内容的提问来源于stack exchange,提问作者Richard Noble

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.10 03:07:38