UserDefaults не сохраняет значения iphone - PullRequest
0 голосов
/ 02 июля 2010

Это странная проблема, с которой я сталкиваюсь. Следующий код, который я использовал для сохранения своих значений в nsuserdefaults, работал нормально ... сохранение и извлечение всех значений, но теперь это сводит меня с ума. Он не сохраняет никаких значений, а полученные значения считаются недействительными. Я использую кодирование и декодирование для сохранения моего пользовательского объекта с именем companyObject. Не сохранено ни одного значения.

-(void)saveCustomObject
{
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];

NSMutableArray *companyArray = [[NSMutableArray alloc]init];
for(Company *companyObj in companyObjectsArray)
{
    [companyArray addObject: [NSKeyedArchiver archivedDataWithRootObject:companyObj]];
}

[defaults setObject:companyArray forKey:@"companyData"];
[defaults setObject:userCompanyInfo.sessionkey forKey:@"sessionkey"];
[defaults setObject:userCompanyInfo.deviceid forKey:@"deviceid"];
[defaults setObject:userCompanyInfo.userid forKey:@"userid"];
[defaults setObject:userCompanyInfo.service_type forKey:@"service_type"];
[defaults setObject:userCompanyInfo.isduallogin forKey:@"isduallogin"]; 
[defaults setObject:userCompanyInfo.securitycode forKey:@"securitycode"];   

[defaults synchronize]; 
}



-(void)loadCustomObject
{
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];

NSMutableArray *companies = [NSMutableArray array];
NSArray *oldCompanies = [[NSUserDefaults standardUserDefaults] arrayForKey:@"companyData"];
if( companies )
    {
        for( NSData *data in oldCompanies )
            {
                Company* companyObj = (Company*) [NSKeyedUnarchiver unarchiveObjectWithData:data];
                [companies addObject:companyObj];
            }
    }

NSString *sessionKey = [defaults stringForKey:@"sessionkey"];
NSString *deviceId = [defaults stringForKey:@"deviceid"];
NSString *userId = [defaults stringForKey:@"userid"];
NSString *service_type = [defaults stringForKey:@"service_type"];
NSString *isduallogin = [defaults stringForKey:@"isduallogin"];
NSString *securitycode = [defaults stringForKey:@"securitycode"];
}

Кто-нибудь может помочь, пожалуйста?

Между тем я запускаю это на симуляторе. Все значения [т.е. Строки здесь] на месте, только не вставляются. Также я получаю эту строку напечатанной в консоли, если я делаю Print Description переменных, в которых я храню значения: Синтаксическая ошибка в выражении, около `variable) '.

EDIT: Это приложение, когда эта часть работала, фактически работало на компьютере Mac, но сейчас я запускаю его на MacBook. Может ли это создать эту проблему?

Спасибо заранее.

Ответы [ 2 ]

0 голосов
/ 11 июля 2010

Если вы хотите использовать симулятор и получать значения переменных, вам необходимо собрать и отладить конфигурацию отладки xcode (не выпуск или распространение). Надеюсь это поможет!

0 голосов
/ 02 июля 2010

Поскольку у вас этот метод работал в прошлом, вы можете сравнить его с любыми изменениями, которые вы сделали с тех пор.У вас есть какой-то код в вашем контроле версий, когда он работал?

Полагаю, это покажет, что вы как-то изменили Компания , а кодирование выполняется неправильно?


PS Что именно вы печатаетепопробуйте 'Print Description' - если это синтаксическая ошибка, мы сможем ее довольно легко исправить?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...