NSJSONSerialization 不更新数据
Posted
技术标签:
【中文标题】NSJSONSerialization 不更新数据【英文标题】:NSJSONSerialization not updating data 【发布时间】:2012-06-13 15:26:12 【问题描述】:我正在尝试使用 ios5 的 NSJSONSerialization 解析 JSON。这段代码第一次正确地解析了我想要的数据,但是数据只是保持不变。 URL 上的 JSON 已经改变,但代码一直给我它解析的第一个数据,现在是不正确的。不管我“构建和运行”多少次,它总是给我同样的东西。
当我将代码复制到新项目时,它再次工作,第一次,然后做同样的事情。
我不知道问题出在哪里,也许是缓存?
谢谢你的帮助!!!
- (void)fetchedData:(NSData *)responseData
NSError* error;
NSDictionary* json = [NSJSONSerialization JSONObjectWithData:responseData
options:kNilOptions
error:&error];
NSArray* allDepartures = [json objectForKey:@"departures"];
NSLog(@"departures: %@", allDepartures);
NSDictionary* stops = [allDepartures objectAtIndex:0];
NSNumber* time = [stops objectForKey:@"expected_mins"];
NSString* name = [stops objectForKey:@"headsign"];
nameLabel.text = [NSString stringWithFormat:@"%@",name];
timeLabel.text = [NSString stringWithFormat:@"%i",[time intValue]];
- (IBAction)getInfo:(id)sender
dispatch_async(kBgQueue, ^
NSData* data = [NSData dataWithContentsOfURL: myURL];
[self performSelectorOnMainThread:@selector(fetchedData:)
withObject:data waitUntilDone:YES];
);
【问题讨论】:
一段时间后(比如一小时),它会像第一次安装应用程序时一样加载(数据正确),然后它会做同样的事情,而不是更新 【参考方案1】:你如何设置“myURL”,只在viewDidLoad中?一段时间后,如果操作系统调用 viewDidUnload 并且您再次运行应用程序,则会调用 viewDidLoad 并再次设置 myURL。如果是这种情况,您应该在每次调用 getInfo 时设置 myURL。
【讨论】:
感谢您的回复。我试过了,但还是不行。我认为这与缓存有关。我第一次运行应用程序时,加载需要 2-3 秒,但之后它只是显示而没有加载。 在 NSData*data 行设置断点并仔细检查 myURL 是否正常以上是关于NSJSONSerialization 不更新数据的主要内容,如果未能解决你的问题,请参考以下文章
NSJSONSerialization 不解析 NSManagedObject
NSJSONSerialization 不工作,NSUTF8StringEncoding 工作
NSJSONSerialization 不解析这个 JSON