Пауза/сбой NSUserDefaults на iOS8

Итак, я запустил приложение на прошлой неделе, до выхода iOS8. Все работало нормально в iOS7 и ниже. Но теперь, когда люди обновились до iOS8, мое приложение без причины приостанавливается/вылетает.

Я пришел к выводу, что когда я устанавливаю NSMutableArray в NSUserDefaults, он приостанавливается.

Обратите внимание, NSMutableArray — это массив NSString.

НО (это странно), если я пропускаю точку останова через код, он работает, и я не получаю паузы.

Вот функция, которую он взрывает...

-(void)UpdateMyAgenda:(NSString*)SessionID Remove:(BOOL)Remove{

if(!Remove){
    //Do not Remove

    NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];


    _MyAgenda = [[NSMutableArray alloc]init];
    _MyAgenda = [prefs mutableArrayValueForKey:@"MyAgenda"];

    [_MyAgenda addObject:SessionID];

    [prefs setObject:_MyAgenda forKey:@"MyAgenda"];

    [prefs synchronize];

}else{
    //Remove

    NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];

    _MyAgenda = [[NSMutableArray alloc]init];
    _MyAgenda = [prefs mutableArrayValueForKey:@"MyAgenda"];

    [_MyAgenda removeObject:SessionID];

    [prefs setObject:_MyAgenda forKey:@"MyAgenda"];

    [prefs synchronize];

}

for (NSString *item in _MyAgenda) {
    NSLog(@"%@", item);
}

NSLog(@"-----------");
}

person DrRocker    schedule 25.09.2014    source источник


Ответы (1)


Итак, вот сделка или исправление на данный момент. Похоже, установка изменяемого массива в настройках проигрывателя не работает, а установка NSArray — нет.

Поэтому преобразуйте свой массив в изменяемый, добавьте объект, затем преобразуйте свой изменяемый массив в nsarray, а затем установите пользовательское значение по умолчанию.

Вот пример....

    NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];
    NSArray *arr = [prefs arrayForKey:@"MyAgenda"];

    _MyAgenda = [NSMutableArray arrayWithArray:arr];
    [_MyAgenda addObject:SessionID];

    arr = [NSArray arrayWithArray:_MyAgenda];

    [prefs setObject:arr forKey:@"MyAgenda"];
    [prefs synchronize];
person DrRocker    schedule 05.10.2014