2013-11-26 40 views
0

试图创建一个字典(不知道是否应该NSDictionaryNSMutableDictionary)从NSString到一个数组(不知道是否应该NSArrayNSMutableArray)。我如何初始化从NSString的字典来的NSArray

属性:

@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我意识到是字典的施工后空。这里出了什么问题,我该如何改变它?

回答

6

后的代码行

if(! _categories) { 

添加

_categories = [NSMutableDictionary new]; 
+0

哎呀。谢谢! – Ra1nWarden

0

如果您没有在代码的某个地方初始化数组_category然后。 必须将它实例里面

if(!_categories) 

你的NSMutableArray _categories实例未分配和初始化呢。

要创建的NSMutableArray实例只是增加

_categories = [NSMutableArray arrayWithCapacity:0];