NSUserDefaults внезапно прекратил сохранять данные

ios objective-c nsuserdefaults

194 просмотра

5 ответа

Это может быть небольшая проблема. или я мог сделать что-то не так, но не смог отследить это. пожалуйста помоги.

Я создал приложение и сохранил userToken и несколько флагов NSUserDefaults. Приложение работало нормально до вчерашнего дня. но сегодня, когда я открыл приложение для дальнейшего развития, все вещи, хранящиеся в нем NSUserDefaults, внезапно приходят null. Я ничего не изменил. а также снова установил приложение, чтобы восстановить данные. Но ничего. Я потерян, почему это происходит.

Я на iOS 9.3.4 с версией Xcode 7.3.1 (7D1014)

вот мой код

в ViewCongtroller1.m:

 NSUserDefaults *def = [NSUserDefaults  standardUserDefaults];
[def setValue:@"user1" forKey:@"Usertoken"];
[def synchronize];

и в ViewController2.h:

NSUserDefaults *def ;

в ViewController2.m:

def = [NSUserDefaults standardUserDefaults];
NSLog(@"Token = %@",[def valueForKey:@"Usertoken"]);

и вот ответ

Token = (null)

Пожалуйста, помогите мне, ребята. Заранее спасибо,

Автор: Mujib Saiyyed Источник Размещён: 08.11.2019 11:07

Ответы (5)


1 плюс

Я разобрался, ребята. Не было никаких проблем с NSUserDefaults. Проблема заключалась в том, что после присвоения значений NSUserDefaultsя очищал NSUserDefaultsгде-то в моем приложении. спасибо за поддержку друзей в любом случае :)

Автор: Mujib Saiyyed Размещён: 20.08.2016 11:31

0 плюса

Я думаю, что нет никаких ошибок в вашем коде. но все равно просто измените setValue на setObject и затем проверьте.

[def setValue:[json valueForKey:@"token"] forKey:@"Usertoken"]; 

в

[def setObject:[json valueForKey:@"token"] forKey:@"Usertoken"];

а также проверить NSLog(@"%@",[json valueForKey:@"token"]);значение в наличии или нет.

Автор: Keyur Hirani Размещён: 20.08.2016 09:44

0 плюса

пожалуйста, проверьте, есть ли в вашем json ключ @ "token", и если да, то проверьте, есть ли в нем данные или нет

Автор: Er. Khatri Размещён: 20.08.2016 09:44

0 плюса

Если значением [json valueForKey:@"token"]является объект (любой тип объекта, например строка или другое), то вы должны использовать,

 [def setObject:[json valueForKey:@"token"] forKey:@"Usertoken"];

вместо

 [def setValue:[json valueForKey:@"token"] forKey:@"Usertoken"];

И вы можете получить ваши данные, как,

 NSLog(@"Token = %@",[def objectForKey:@"Usertoken"]);
Автор: Lion Размещён: 20.08.2016 09:52

0 плюса

*I used the following code to print out the location of my NSUserDefaults file.Some time we cleanup the docDirectory data in app,so its remove NSUserDefault File and we got a nil value ,

попробуйте это для отладки ..

NSArray *path = NSSearchPathForDirectoriesInDomains(
   NSLibraryDirectory, NSUserDomainMask, YES);
NSString *folder = [path objectAtIndex:0];
NSLog(@"Your NSUserDefaults are stored in this folder: %@/Preferences", folder);*
Автор: Atul Gawali Размещён: 20.08.2016 10:52
Вопросы из категории :
32x32