NSUserDefaults Пауза/Срив на iOS8

Добре, стартирах приложение миналата седмица, преди да излезе iOS8. Всичко работеше добре в iOS7 и по-стари. Но сега, тъй като хората са актуализирали до iOS8, моето приложение спира/се срива без причина.

Приех, че когато задам NSMutableArray на NSUserDefaults, той спира.

Моля, имайте предвид, че NSMutableArray е масив от NSStrings.

НО (това е странно), ако прескоча точката на прекъсване през кода, той работи и не получавам пауза.

Ето функцията, която взривява...

-(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