如何将字典从NSString初始化为NSArray

时间:2013-11-26 17:35:34

标签: ios iphone objective-c nsdictionary

我正在尝试从NSDictionary创建一个字典(不确定它应该是NSMutableDictionary还是NSString)到一个数组(不确定它是否应该是NSArrayNSMutableArray)。

属性:

@property(nonatomic, readonly) NSMutableDictionary * categories;

实现:

@synthesize categories = _categories;


- (NSMutableDictionary *)categories{
    if(! _categories) {
        for(PFObject * each in self.products) {
            NSString * currentcategory = [each valueForKey:@"subtitle"];
            NSArray * currentlist = [_categories objectForKey:currentcategory];
            if(! currentlist) {
                currentlist = [[NSArray alloc] init];
            }
            NSMutableArray * newArray = [currentlist mutableCopy];
            [newArray addObject:each];
            NSArray * newlist = [NSArray arrayWithArray:newArray];
            [_categories setObject:newlist forKey:currentcategory];
        }
    }
    NSLog(@"After constructor the value of the dictionary is %d", [_categories count]);
    return _categories;
}

从调试NSLog我意识到构造后字典是空的。这里有什么问题,我该如何改变呢?

2 个答案:

答案 0 :(得分:6)

在代码行之后

 if(! _categories) {

添加

_categories = [NSMutableDictionary new];

答案 1 :(得分:0)

如果你没有在代码中的某处初始化_category数组。 你必须在

中实例化它
if(!_categories)

您的NSMutableArray _categories实例尚未分配和初始化。

要创建NSMutableArray的实例,只需添加

_categories = [NSMutableArray arrayWithCapacity:0];
相关问题