for循环里的值添加到数组后在循环外打印数组为空

来源:互联网 发布:js获取浏览器版本号 编辑:程序博客网 时间:2024/06/06 23:19

今天做项目解析数据后,用for循环取数据字典里的值,然后赋值给早已定义好的NSMutableArray类型的数组属性gc_names。如下:

//存储分类商品名称@property (nonatomic,strong)NSMutableArray *gc_names;

下面是for循环赋值

for (NSDictionary *gc in class_lists) {            NSString *goodName = (NSString *)[gc objectForKey:@"gc_name"];            NSLog(@"%@",goodName);            [self.gc_names addObject:goodName];                    }        NSLog(@"%@",_gc_names); //测试打印

当测试打印是发现_gc_names为nil。但goodName却有值,为了这个问题我纠结了好久。最后知道了问题的所在。现在整理下,方便以后自己看,也可以帮助一下正在纠结的你。一般这种情况有2种要检查的,一看你是否为你定义的NSMutableArray属性值开辟了空间
@property (nonatomic,strong)NSMutableArray *gc_names;就是初始化没有。如果没有请初始化再试试。我是重写_gc_names的get方法。

- (NSMutableArray *)gc_names{    if (!_gc_names) {        _gc_names = [NSMutableArray array];    }    return _gc_names;}

第二种就是你异步获取数据,所以数据还没获取到,所以是没有值的 。
解决方法就是用GCD或其他方式创建主线程,放到主线程中试试。

0 0
原创粉丝点击