Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

NSUserDefaults EXC_BAD_ACCESS

I'm receiving an error message "EXC_BAD_ACCESS" because of "onlineLastUpdatedAt" and I don't understand why. Here's my code:

#define IMONGGO_PRODUCTS_ONLINE_LAST_UPDATED_AT_KEY @"iMonggoFetcher.ImonggoOnlineProductsLastUpdatedAt"

- (void) saveLastUpdatedAtDate{
    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
    NSMutableArray *onlineLastUpdatedAt = [[defaults objectForKey:IMONGGO_PRODUCTS_ONLINE_LAST_UPDATED_AT_KEY] mutableCopy];
    NSString *onlineLastUpdatedAtValue = [iMonggoFetcher lastUpdatedAtDate];

    if (!onlineLastUpdatedAt) onlineLastUpdatedAt = [[NSMutableArray alloc]init];

    if([onlineLastUpdatedAt containsObject:onlineLastUpdatedAtValue]){
        NSLog(@"onlineLastUpdated at contains a value for onlineLastUpdatedatValue");
        //[defaults setObject:onlineLastUpdatedAt forKey:IMONGGO_PRODUCTS_ONLINE_LAST_UPDATED_AT_KEY];

    }else{
        NSLog(@"!onlineLastUpdated at contains a value for onlineLastUpdatedatValue");

        [onlineLastUpdatedAt addObject:onlineLastUpdatedAt];
        NSLog(@"mutablearray: %@", onlineLastUpdatedAt);
        [defaults setValue:onlineLastUpdatedAt forKey:IMONGGO_PRODUCTS_ONLINE_LAST_UPDATED_AT_KEY];
        [defaults synchronize];
    }
    NSLog(@"added to defaults: %@ ",onlineLastUpdatedAtValue);
}
like image 799
acecapades Avatar asked May 29 '26 15:05

acecapades


1 Answers

You're calling setValue:ForKey: when you should be calling setObject:ForKey:

[defaults setValue:onlineLastUpdatedAt forKey:IMONGGO_PRODUCTS_ONLINE_LAST_UPDATED_AT_KEY];

Replace with:

[defaults setObject:onlineLastUpdatedAt forKey:IMONGGO_PRODUCTS_ONLINE_LAST_UPDATED_AT_KEY];
like image 55
ikuramedia Avatar answered Jun 01 '26 04:06

ikuramedia



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!