2012-06-13 55 views
0

我想解析JSON與iOS5的NSJSONSerialization。這段代碼正確地解析了我第一次想要的數據,但是那時數據正好保持相同。 URL上的JSON已經更改,但代碼不斷給我解析它的第一個數據,現在這是不正確的。無論我「建造和運行」多少次,它都會給我同樣的東西。NSJSONSerialization沒有更新數據

當我將代碼複製到新項目中時,它又是第一次工作,然後執行相同的操作。

我不知道問題出在哪裏,也許緩存?

感謝您的幫助!

- (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]; 
}); 
+0

經過一段時間(如一小時)後,它會像第一次安裝應用程序(數據正確)時那樣加載,然後它執行相同的操作,而不是更新 –

回答

0

你如何設置「myURL」,只在viewDidLoad中?一段時間後,如果操作系統調用viewDidUnload並再次運行應用程序,則調用viewDidLoad,並再次設置myURL。如果是這種情況,每次調用getInfo時都應該設置myURL。

+0

感謝您的回覆。我試過了,但仍然沒有奏效。我認爲這與緩存有關。我第一次運行該應用程序時,需要花費2-3秒才能加載,但在此之後它只顯示不加載。 –

+0

在NSData *數據行設置了一個斷點,然後再次檢查myURL是否正常 – user1447414