2014-06-24 3 views
2

Forecasting 랩퍼 라이브러리 (https://github.com/iwasrobbed/Forecastr)를 사용하여 Forecast.io 웹 사이트의 데이터를 가져와 작업하고 있습니다. 현재 GitHub의 프로젝트에서 제공하는 예제 프로젝트에서 출력을 내 뱉어 :목표 C이 NSString을 구문 분석하는 방법

이제 라이브러리 상태이 JSON이며,이 JSON처럼 보이지만 실제로 그래서 이동하는 방법이 확실하지 JSON없는
{ 
currently =  { 
    apparentTemperature = "68.72"; 
    cloudCover = 1; 
    dewPoint = "66.43000000000001"; 
    humidity = "0.92"; 
    icon = cloudy; 
    nearestStormDistance = 0; 
    ozone = 327; 
    precipIntensity = "0.0021"; 
    precipIntensityError = "0.0002"; 
    precipProbability = "0.01"; 
    precipType = rain; 
    pressure = "1011.38"; 
    summary = "Humid and Overcast"; 
    temperature = "68.72"; 
    time = 1403645561; 
    visibility = "4.62"; 
    windBearing = 182; 
    windSpeed = "4.86"; 
}; 
daily =  { 
    data =   (
        { 
      apparentTemperatureMax = "70.81999999999999"; 
      apparentTemperatureMaxTime = 1403658000; 
      apparentTemperatureMin = "64.78"; 
      apparentTemperatureMinTime = 1403596800; 
      cloudCover = "0.9399999999999999"; 
      dewPoint = "63.8"; 
      humidity = "0.86"; 
      icon = rain; 
      moonPhase = "0.92"; 
      ozone = "328.74"; 
      precipIntensity = "0.0286"; 
      precipIntensityMax = "0.0834"; 
      precipIntensityMaxTime = 1403636400; 
      precipProbability = 1; 
      precipType = rain; 
      pressure = "1013.38"; 
      summary = "Rain throughout the day."; 
      sunriseTime = 1403600850; 
      sunsetTime = 1403657295; 
      temperatureMax = "70.81999999999999"; 
      temperatureMaxTime = 1403658000; 
      temperatureMin = "64.78"; 
      temperatureMinTime = 1403596800; 
      time = 1403582400; 
      visibility = "7.24"; 
      windBearing = 169; 
      windSpeed = "3.97"; 
     }, 
        { 
      apparentTemperatureMax = "75.17"; 
      apparentTemperatureMaxTime = 1403726400; 
      apparentTemperatureMin = "65.19"; 
      apparentTemperatureMinTime = 1403694000; 
      cloudCover = "0.99"; 
      dewPoint = "66.65000000000001"; 
      humidity = "0.89"; 
      icon = rain; 
      moonPhase = "0.95"; 
      ozone = "323.68"; 
      precipIntensity = "0.0362"; 
      precipIntensityMax = "0.1194"; 
      precipIntensityMaxTime = 1403668800; 
      precipProbability = "0.9399999999999999"; 
      precipType = rain; 
      pressure = "1011.43"; 
      summary = "Rain in the morning and afternoon."; 
      sunriseTime = 1403687270; 
      sunsetTime = 1403743699; 
      temperatureMax = "75.17"; 
      temperatureMaxTime = 1403726400; 
      temperatureMin = "65.19"; 
      temperatureMinTime = 1403694000; 
      time = 1403668800; 
      visibility = "7.69"; 
      windBearing = 14; 
      windSpeed = "5.46"; 
     }, 
        { 
      apparentTemperatureMax = "70.76000000000001"; 
      apparentTemperatureMaxTime = 1403805600; 
      apparentTemperatureMin = "62.47"; 
      apparentTemperatureMinTime = 1403838000; 
      cloudCover = "0.79"; 
      dewPoint = "62.15"; 
      humidity = "0.86"; 
      icon = rain; 
      moonPhase = "0.98"; 
      ozone = "340.41"; 
      precipIntensity = "0.0134"; 
      precipIntensityMax = "0.0398"; 
      precipIntensityMaxTime = 1403762400; 
      precipProbability = "0.91"; 
      precipType = rain; 
      pressure = "1011.22"; 
      summary = "Light rain until afternoon."; 
      sunriseTime = 1403773692; 
      sunsetTime = 1403830101; 
      temperatureMax = "70.76000000000001"; 
      temperatureMaxTime = 1403805600; 
      temperatureMin = "62.47"; 
      temperatureMinTime = 1403838000; 
      time = 1403755200; 
      visibility = "9.67"; 
      windBearing = 4; 
      windSpeed = "10.54"; 
     }, 
        { 
      apparentTemperatureMax = "77.7"; 
      apparentTemperatureMaxTime = 1403899200; 
      apparentTemperatureMin = "56.96"; 
      apparentTemperatureMinTime = 1403856000; 
      cloudCover = "0.15"; 
      dewPoint = "58.31"; 
      humidity = "0.73"; 
      icon = "partly-cloudy-day"; 
      moonPhase = "0.02"; 
      ozone = "354.38"; 
      precipIntensity = "0.0007"; 
      precipIntensityMax = "0.0021"; 
      precipIntensityMaxTime = 1403841600; 
      precipProbability = "0.14"; 
      precipType = rain; 
      pressure = "1016.58"; 
      summary = "Partly cloudy starting in the afternoon, continuing until evening."; 
      sunriseTime = 1403860116; 
      sunsetTime = 1403916500; 
      temperatureMax = "77.7"; 
      temperatureMaxTime = 1403899200; 
      temperatureMin = "56.96"; 
      temperatureMinTime = 1403856000; 
      time = 1403841600; 
      visibility = 10; 
      windBearing = 332; 
      windSpeed = "3.48"; 
     }, 
        { 
      apparentTemperatureMax = "82.34999999999999"; 
      apparentTemperatureMaxTime = 1403985600; 
      apparentTemperatureMin = "58.31"; 
      apparentTemperatureMinTime = 1403946000; 
      cloudCover = "0.14"; 
      dewPoint = "61.68"; 
      humidity = "0.76"; 
      icon = "partly-cloudy-day"; 

      moonPhase = "0.05"; 
      ozone = "346.75"; 
      precipIntensity = "0.0002"; 
      precipIntensityMax = "0.0004"; 
      precipIntensityMaxTime = 1403996400; 
      precipProbability = "0.02"; 
      precipType = rain; 
      pressure = "1020.75"; 
      summary = "Partly cloudy in the afternoon."; 
      sunriseTime = 1403946543; 
      sunsetTime = 1404002897; 
      temperatureMax = "80.54000000000001"; 
      temperatureMaxTime = 1403985600; 
      temperatureMin = "58.31"; 
      temperatureMinTime = 1403946000; 
      time = 1403928000; 
      windBearing = 230; 
      windSpeed = "1.58"; 
     }, 
        { 
      apparentTemperatureMax = "87.03"; 
      apparentTemperatureMaxTime = 1404075600; 
      apparentTemperatureMin = "60.66"; 
      apparentTemperatureMinTime = 1404028800; 
      cloudCover = "0.4"; 
      dewPoint = "64.09999999999999"; 
      humidity = "0.75"; 
      icon = "partly-cloudy-day"; 
      moonPhase = "0.08"; 
      ozone = "320.44"; 
      precipIntensity = "0.0001"; 
      precipIntensityMax = "0.0002"; 
      precipIntensityMaxTime = 1404068400; 
      precipProbability = "0.03"; 
      precipType = rain; 
      pressure = "1019.06"; 
      summary = "Partly cloudy throughout the day."; 
      sunriseTime = 1404032971; 
      sunsetTime = 1404089291; 
      temperatureMax = "83.62"; 
      temperatureMaxTime = 1404075600; 
      temperatureMin = "60.66"; 
      temperatureMinTime = 1404028800; 
      time = 1404014400; 
      windBearing = 193; 
      windSpeed = "2.76"; 
     }, 
        { 
      apparentTemperatureMax = "91.87"; 
      apparentTemperatureMaxTime = 1404158400; 
      apparentTemperatureMin = "67.73999999999999"; 
      apparentTemperatureMinTime = 1404118800; 
      cloudCover = "0.27"; 
      dewPoint = "69.93000000000001"; 
      humidity = "0.8"; 
      icon = "partly-cloudy-day"; 
      moonPhase = "0.11"; 
      ozone = "307.38"; 
      precipIntensity = "0.0013"; 
      precipIntensityMax = "0.0039"; 
      precipIntensityMaxTime = 1404180000; 
      precipProbability = "0.29"; 
      precipType = rain; 
      pressure = "1012.98"; 
      summary = "Partly cloudy starting in the afternoon."; 
      sunriseTime = 1404119401; 
      sunsetTime = 1404175684; 
      temperatureMax = "85.01000000000001"; 
      temperatureMaxTime = 1404158400; 
      temperatureMin = "67.73999999999999"; 
      temperatureMinTime = 1404118800; 
      time = 1404100800; 
      windBearing = 224; 
      windSpeed = "5.24"; 
     }, 
        { 
      apparentTemperatureMax = "93.66"; 
      apparentTemperatureMaxTime = 1404244800; 
      apparentTemperatureMin = "71.77"; 
      apparentTemperatureMinTime = 1404205200; 
      cloudCover = "0.13"; 
      dewPoint = "73.33"; 
      humidity = "0.85"; 
      icon = rain; 
      moonPhase = "0.13"; 
      ozone = "307.25"; 
      precipIntensity = "0.0095"; 
      precipIntensityMax = "0.0179"; 
      precipIntensityMaxTime = 1404237600; 
      precipProbability = "0.64"; 
      precipType = rain; 
      pressure = "1007.95"; 
      summary = "Light rain throughout the day."; 
      sunriseTime = 1404205833; 
      sunsetTime = 1404262073; 
      temperatureMax = "84.91"; 
      temperatureMaxTime = 1404244800; 
      temperatureMin = "71.77"; 
      temperatureMinTime = 1404205200; 
      time = 1404187200; 
      windBearing = 227; 
      windSpeed = "5.82"; 
     } 
    ); 
    icon = rain; 
    summary = "Rain throughout the week, with temperatures bottoming out at 71\U00b0F on Thursday."; 
}; 
flags =  { 
    "darksky-stations" =   (
     KCXX 
    ); 
    "isd-stations" =   (
     "711830-99999", 
     "713710-99999", 
     "713713-99999", 
     "716120-99999", 
     "716275-99999" 
    ); 
    "madis-stations" =   (
     AS947, 
     AU037, 
     BATEU06, 
     C3442, 
     C7533, 
     C8027, 
     C8480, 
     CWHM, 
     CWIZ, 
     CWTA, 
     CWVQ, 
     CYHU, 
     CYUL, 
     D2821, 
     D3464, 
     D8252 
    ); 
    sources =   (
     nwspa, 
     isd, 
     "nearest-precip", 
     gfs, 
     fnmoc, 
     sref, 
     rtma, 
     rap, 
     nam, 
     cmc, 
     madis, 
     darksky 
    ); 
    units = us; 
}; 
offset = "-4"; 
timezone = "America/Montreal"; 
} 

내 Xcode 프로젝트에서이 NSString 구문 분석.

해결 방법 :
id 유형의 NSDictionary입니다. mvanallen 상태가대로 따라서 구문 분석이 :

NSLog(@"Summary: %@",[json valueForKeyPath:@"currently.summary"]); 

인쇄 ..should :

Summary: Humid and Overcast 

가까이 코드에서 보면 같은 특정 externs이 있습니다 : 따라서

extern NSString *const kFCCurrentlyForecast; 

가 또한 다음과 같이 할 수 있습니다.

NSLog(@"%@",[[JSON objectForKey:kFCCurrentlyForecast] objectForKey:kFCApparentTemperature]); 
+4

은 당신이 가지고있는 것 같습니다 것은의 NSLog입니다 NSDictionary (JSON을 나타내는 첫 번째'''문자? 참조). json.org에서 JSON 구문 (배우기는 매우 간단 함)을 확인한 다음 JSON 배열이 NSArray 객체에 매핑되고 JSON "객체"가 NSDictionary 객체에 매핑된다는 것을 이해해야합니다. 모양은 대부분 두 표현에서 동일합니다. 배열의 JSON'[]'만 NSArray에 대해'()'로 바뀌고 NSDictionary 키/값 구분 기호는':'보다는'='입니다. (그리고 약간의 차이점이 있습니다.) 그래서 net-net은 이미 가지고있는 것이 파싱 된 것입니다. –

답변

5

이것은 JSON이 아니며, 보통 NSD가 NSF가 적용되는 표준 NSDictionary의 표준 인 -description 인 것으로 보입니다. 이 경우, 모든 것이 이미이 로그 문에 대해 구문 분석 된

..

NSLog(@"Summary: %@",[json valueForKeyPath:@"currently.summary"]); 

인쇄 ..should :

Summary: Humid and Overcast 
관련 문제