NSUserDefaults EXC_BAD_ACCESS - PullRequest
       2

NSUserDefaults EXC_BAD_ACCESS

1 голос
/ 10 февраля 2012

Я получаю сообщение об ошибке «EXC_BAD_ACCESS» из-за «onlineLastUpdatedAt», и я не понимаю, почему. Вот мой код:

#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);
}

Ответы [ 2 ]

1 голос
/ 10 февраля 2012

Вы звоните setValue:ForKey:, когда должны звонить setObject:ForKey:

[defaults setValue:onlineLastUpdatedAt forKey:IMONGGO_PRODUCTS_ONLINE_LAST_UPDATED_AT_KEY];

Заменить на:

[defaults setObject:onlineLastUpdatedAt forKey:IMONGGO_PRODUCTS_ONLINE_LAST_UPDATED_AT_KEY];
0 голосов
/ 10 февраля 2012

вы не можете напрямую ввести какой-либо объект в NSUserDefaults Прежде всего вам нужно преобразовать этот объект в NSData или NSMutableData, попробуйте это

NSData *dataVal = [NSKeyedArchiver archivedDataWithRootObject:onlineLastUpdatedAt];
[defaults setObject:dataVal forKey:IMONGGO_PRODUCTS_ONLINE_LAST_UPDATED_AT_KEY];
[defaults synchronize];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...