如何在字符串中存储JSON响应,然后在本地存储该字符串ios objective c

时间:2016-05-27 13:33:23

标签: ios objective-c json

[在此输入图像描述] [1]我从JSON获得三个值。 如何在NSString中存储这三个值,然后在本地存储这些字符串,即在设备上? 我试过NSUserDefaults,但我无法做到。我已附上了代码段。

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]]];

2 个答案:

答案 0 :(得分:0)

在else块中用

替换内容
[[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];

编辑:说明

在上面的代码中,对象_branchUriStore未定义,可能是您问题的一部分(一个简单的拼写错误?)。下面,我更新并浓缩了您的代码,以消除您使用branchId的另一个问题,以便您可以从样式中认识到您尝试做的很多事情都很好。

另请注意,@ marddie在评论中提供了以下额外的改进。

答案 1 :(得分:-1)

好的,这是你应该做的。

1-转换您的JSONData no NSData

2 - 将NSData保存在NSUserDefaults /

希望这有帮助!