【发布时间】:2014-06-02 08:10:53
【问题描述】:
你好,我有这样的 json 数据
来自 NSLog(@"JSON sec blnce list: %@", responseObject);:
{
detail = (
{
account = 9X000101300160;
balance = "1.000.000";
date = "<null>";
price = 0;
secCode = 9999;
type = Blocked;
value = 0;
},
{
account = 9X000101300160;
balance = "1.000.000";
date = "<null>";
price = 0;
secCode = 9999;
type = Available;
value = 0;
}
);
header = {
date = 24092012;
investorID = IDD010239865303;
securityType = Equity;
};
}
我想要做的是将这个 json 结果保存到 NSUserDefaults 中。这是我的保存方式: 在.h
@property NSDictionary *jsonResult;
在.m
AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
[manager.requestSerializer setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"Content-Type"];
[manager POST:URI_SECURITY_BALANCE_DETAIL parameters:param success:^(AFHTTPRequestOperation *operation, id responseObject) {
[SVProgressHUD dismiss];
NSLog(@"JSON sec blnce list: %@", responseObject);
self.jsonResult = responseObject;
//simpan hasil query ke device
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
[defaults setObject:self.jsonResult forKey:@"securityBalanceNextJsonResult"];
[defaults synchronize];
但上面的代码给了我一个错误:“尝试设置一个非属性列表对象”
如何将我从 json 结果中获得的 NSDictionary 保存到 NSUserDefaults 中??
更新:(已解决) 可能有人有同样的问题,这是我的工作代码:
self.jsonResult = responseObject;
NSData *data = [NSJSONSerialization dataWithJSONObject:self.jsonResult options:kNilOptions error:nil];
[[NSUserDefaults standardUserDefaults] setObject:data forKey:@"securitiesBalanceJsonResult"];
NSError* error;
NSDictionary* jsonDB = [NSJSONSerialization
JSONObjectWithData:[defaults objectForKey:@"securitiesBalanceJsonResult"]
options:kNilOptions
error:&error];
NSLog(@"data:%@",jsonDB);
【问题讨论】:
-
什么是 NSLog(@"JSON sec blnce list: %@", responseObject);打印?
-
我在第一段 JSON sec blnce 列表中提到的打印 json 数据:{ detail = ( { account = 9X000101300160; balance = "1.000.000"; date = "
"; price = 0 ; secCode = 9999; type = Blocked; value = 0; }, { account = 9X000101300160; balance = "1.000.000"; date = " "; price = 0; secCode = 9999; type = Available; value = 0;});标头 = { 日期 = 24092012;投资者ID = IDD010239865303;证券类型 = 股权; }; } -
你应该从你的响应中创建一个合适的模型对象,然后在将其转换为 nsdata 后将其存储在 nsuserdefault 中。
-
@pawan:对我来说似乎是对的,因为它最好构建一个模型并且易于存储和检索信息。
-
@NhonNguyen 正确,现在你走在了正确的轨道上。如果您需要任何帮助,请在此处告诉我。祝你好运!
标签: ios objective-c