2013-07-04 57 views
0

我有一個JSON請求,它提供了禱告時間。我如何使用Objective-C來確定下一步是什麼?該JSON看起來是這樣的:確定哪個時間是下一個時間列表

{ 
    address = "<null>"; 
    city = "<null>"; 
    country = UK; 
    "country_code" = GB; 
    daylight = 1; 
    for = daily; 
    items =  (
       { 
      asr = "5:22 pm"; 
      "date_for" = "2013-7-1"; 
      dhuhr = "1:01 pm"; 
      fajr = "2:15 am"; 
      isha = "11:47 pm"; 
      maghrib = "9:24 pm"; 
      shurooq = "4:39 am"; 
     } 
    ); 
    latitude = "50.9994081"; 
    link = "http://muslimsalat.com/UK"; 
    longitude = "0.5039011"; 
    "map_image" = "http://maps.google.com/maps/api/staticmap?center=50.9994081,0.5039011&sensor=false&zoom=13&size=300x300"; 
    "postal_code" = "<null>"; 
    "prayer_method_name" = "Muslim World League"; 
    "qibla_direction" = "119.26"; 
    query = "51.000000,0.500000"; 
    state = "<null>"; 
    timezone = 0; 
    title = UK; 
    "today_weather" =  { 
     pressure = 1020; 
     temperature = 14; 
    }; 
} 

到目前爲止我的代碼是:

-(CLLocationCoordinate2D) getLocation{ 
    CLLocationManager *locationManager = [[[CLLocationManager alloc] init] autorelease]; 
    locationManager.delegate = self; 
    locationManager.desiredAccuracy = kCLLocationAccuracyBest; 
    locationManager.distanceFilter = kCLDistanceFilterNone; 
    [locationManager startUpdatingLocation]; 
    CLLocation *location = [locationManager location]; 
    CLLocationCoordinate2D coordinate = [location coordinate]; 

    return coordinate; 
} 

//class to convert JSON to NSData 
- (IBAction)getDataFromJson:(id)sender { 
    //get the coords: 
    CLLocationCoordinate2D coordinate = [self getLocation]; 
    NSString *latitude = [NSString stringWithFormat:@"%f", coordinate.latitude]; 
    NSString *longitude = [NSString stringWithFormat:@"%f", coordinate.longitude]; 

    NSLog(@"*dLatitude : %@", latitude); 
    NSLog(@"*dLongitude : %@",longitude); 

    //load in the times from the json 
    NSString *myURLString = [NSString stringWithFormat:@"http://muslimsalat.com/%@,%@/daily/5.json", latitude, longitude]; 
    NSURL *url = [NSURL URLWithString:myURLString]; 
    NSData *jsonData = [NSData dataWithContentsOfURL:url]; 

    if(jsonData != nil) 
    { 
     NSError *error = nil; 
     id result = [NSJSONSerialization JSONObjectWithData:jsonData options:NSJSONReadingMutableContainers error:&error]; 
     NSArray *jsonArray = (NSArray *)result; //convert to an array 
     if (error == nil) 
      NSLog(@"%@", result); 
      NSLog(@"%@", jsonArray); 
      for (id element in jsonArray) { 
       NSLog(@"Element asr: %@", [element objectForKey:@"asr"]); 
     } 
    } 
} 

我怎樣才能得到當前的時間,並確定哪些祈禱隨之而來的?

謝謝!

+0

不確定您發佈問題的方式是否是JSON格式無效。 – danypata

回答

1

您需要使用[result objectForKey:@"items"]才能獲得'項目'字典。然後使用NSDateFormatter將字符串值轉換爲NSDate。然後,遍歷新的字典並找到時間間隔最短的時間,直到現在使用[currentDate timeIntervalSinceNow]。這是你的下一個禱告。

+0

難道這不能也給最近發生的那個嗎?所以,如果下一個是3個小時,但前一個是1個小時,那麼它是不是會給出前一個? – samiles

+0

該方法根據事件是將來還是過去返回正數和負數。尋找最小的正數會給你下一個即將到來的事件。 –

+0

啊,當然,謝謝你! – samiles

1

獲取日期列表,然後使用NSPredicate將該列表過濾爲日期>= [NSDate date],然後對其進行升序排序。然後,過濾的排序數組中的第一項將成爲下一個日期。

0

閱讀蘋果的Date and Time Programming Guide。你會找到方法將字符串時間(「2:15 am」等)轉換爲NSDate對象,獲取當前日期和時間的方法(例如[NSDate new]返回當前日期和時間)以及比較日期/時間的方法,以便您可以找到下一個。

相關問題