用dictionary初始化的对象返回null

时间:2015-09-04 00:24:26

标签: ios iphone nsdictionary

即使传递给的字典返回正确的数据,此方法的返回值仍返回null。在调试中,我可以看到dict由16个键/值对组成,但是当它返回self时,我的对象返回时没有数据。我看过几个例子,我的代码似乎是一样的,但我的方法并没有返回任何东西。 非常感谢任何帮助

#import "STHsCardData.h"

@implementation STHsCardData

@synthesize name = _name;

-(instancetype)initWithDictionary: (NSDictionary*) dict{
if (self = [super init]) {
    _name = [dict objectForKey:@"name"];
}
return self;
}

在这个类中,我使用字典初始化我的STHsCardData对象,但名称属性" newCard"对象总是nil而不是卡的名称。

//Loop through data to get to each card object
for (NSDictionary *collection in data)
{
    if (collection.count == 0)
    {

        NSLog(@"array is empty");
    }
    else

        [setArray addObject:collection];
}
for (NSDictionary *set in setArray)
{
    for (NSDictionary *cardObj in set){
        STHsCardData *newCard = [[STHsCardData alloc]initWithDictionary:cardObj];         
        [cardArray addObject: newCard];
    }  
}    
return cardArray;
}
@end

2 个答案:

答案 0 :(得分:0)

如果没有数据来源的数据结构,很难确切地说出错误的原因。我怀疑问题是在setArrayset的嵌套for循环中 - 是否只有一个循环?或者密钥是不同的情况,例如"Name""NAME"或该密钥不存在。

答案 1 :(得分:0)

几乎不可能在没有提供数据并通过调试器的情况下调试这样的数据驱动代码。为什么不添加日志语句来查看发生了什么:

-(instancetype)initWithDictionary: (NSDictionary*) dict
{
  if (self = [super init]) 
  {
    id nameFromDict = dict[@"name"];
    NSLog(@"In initWithDictionary, dict[@"name"] = %@", nameFromDict];
    _name = nameFromDict;
  }
  return self;
}