简体   繁体   中英

How to initialize a dictionary from NSString to NSArray

I am trying to create a dictionary (Not sure whether it should be NSDictionary or NSMutableDictionary ) from NSString to an array (Not sure whether it should be NSArray or NSMutableArray ).

property:

@property(nonatomic, readonly) NSMutableDictionary * categories;

implementation:

@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;
}

From the debug NSLog I realize that the dictionary is empty after the construction. What is wrong here and how shall I change it?

After code line

 if(! _categories) {

add

_categories = [NSMutableDictionary new];

If you did not initialize _category array somewhere in code then. you must instantiate it inside

if(!_categories)

Your NSMutableArray _categories instance is not allocated and initialized yet.

To create instance of NSMutableArray just add

_categories = [NSMutableArray arrayWithCapacity:0];

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM