2016-05-27 5 views
-2

[введите описание изображения здесь] [1] Я получаю три значения от JSON. Как хранить эти три значения в NSString и затем сохранить эти строки локально i.e на устройстве? Я пробовал NSUserDefaults, но я не могу этого сделать. Я прикрепил фрагмент кода.Как сохранить ответ JSON в строке, а затем сохранить эту строку локально. Объект ios c

NSData *JSONData = [NSJSONSerialization dataWithJSONObject:responseObject 
                options:0 // Pass 0 if you don't care about the readability of the generated string 
                error:&error]; 

if (! JSONData) 
{ 
    NSLog(@"Got an error: %@", error); 
} else { 
    //_branchId = [responseObject valueForKey:@"branchId"]; 
    _branchName = [responseObject valueForKey:@"branchName"]; 
    _branchUri = [responseObject valueForKey:@"branchUri"]; 
    [[NSUserDefaults standardUserDefaults] setObject:_branchId forKey:[responseObject valueForKey:_branchId]]; 
    [[NSUserDefaults standardUserDefaults] setObject:_branchName forKey:@"branchName"]; 
    [[NSUserDefaults standardUserDefaults] setObject:_branchUriStore forKey:@"_branchUri"]; // Here the setobject value remains nil only 
    [[NSUserDefaults standardUserDefaults] synchronize]; 

PS: Я хочу использовать эту сохраненную ценность и в своей общей утилите. Как это сделать?

NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:[NSString stringWithFormat:@"(__fetchBranchUri)/%@",url]]]; 
+0

Вы можете поделиться с json? мы могли бы помочь больше, если вы это сделаете. –

+1

В чем проблема? что не получилось? –

+0

Возможный дубликат [Генерация строки JSON из NSDictionary в iOS] (http://stackoverflow.com/questions/6368867/generate-json-string-from-nsdictionary-in-ios) –

ответ

-1

Хорошо, вот что вам следует делать.

1- конвертировать JSONData не NSData

2-Сохранить NSData в NSUserDefaults/

Надеется, что это помогает!

+0

Я сделал это. Но я хочу сохранить каждое значение в отдельной строке, потому что это значение нужно использовать повсюду. –

0

В блоке еще заменить содержимое с

[[NSUserDefaults standardUserDefaults] setObject:[responseObject valueForKey:@"branchId"] forKey:@"branchId"]; 
[[NSUserDefaults standardUserDefaults] setObject:[responseObject valueForKey:@"branchName"] forKey:@"branchName"]; 
[[NSUserDefaults standardUserDefaults] setObject:[responseObject valueForKey:@"branchUri"] forKey:@"_branchUri"]; 

[[NSUserDefaults standardUserDefaults] synchronize]; 

Edit: Объяснение

В коде выше объекта _branchUriStore не определена, и может быть частью вашей проблемы (простая опечатка?) , Ниже я обновил и сконфигурировал ваш код, чтобы удалить еще одну проблему с вашим использованием branchId, и чтобы вы могли распознать стиль, что многое из того, что вы пытались сделать, прекрасно.

Также обратите внимание, что @rmaddie предоставила дополнительные уточнения ниже в комментариях.

+0

Используйте 'objectForKey:', а не 'valueForKey:', если у вас нет конкретной потребности в KVC. И вам не нужно вызывать 'synchronize'. – rmaddy

+0

И как это отличается от кода в вопросе, кроме объединения нескольких строк? – rmaddy

+0

В кажущейся логике есть ошибки. Обратите внимание на строку: – digitalR

Смежные вопросы