2014-11-22 2 views
-1

이 코드를 어떻게 Swift로 변환 할 수 있습니까?목표 C to Swift JSON 구문 분석

- (void)fetchFeed 
{ 
    NSString *requestString = @"https://bookapi.bignerdranch.com/private/courses.json"; 
    NSURL *url = [NSURL URLWithString:requestString]; 
    NSURLRequest *req = [NSURLRequest requestWithURL:url]; 

    NSURLSessionDataTask *dataTask = 
     [self.session dataTaskWithRequest:req 
         completionHandler: 
     ^(NSData *data, NSURLResponse *response, NSError *error) { 

      NSDictionary *jsonObject = [NSJSONSerialization JSONObjectWithData:data 
                     options:0 
                      error:nil]; 
      self.courses = jsonObject[@"courses"]; 

      NSLog(@"%@", self.courses); 

      dispatch_async(dispatch_get_main_queue(), ^{ 
       [self.tableView reloadData]; 
      }); 
     }]; 
    [dataTask resume]; 
} 

내가이 그것을 변환하려고하지만, 엑스 코드는이 줄을 내가 그것을 선택적 항목에 오류의 일종하는 생각 self._courses = json["courses"]![0] as NSArray 을해야

func fetchFeed(){ 

     var requestString = "http://bookapi.bignerdranch.com/courses.json" 
     var url = NSURL(string: requestString) 
     var req = NSURLRequest(URL: url!) 

     var dataTask:NSURLSessionDataTask = self._session.dataTaskWithRequest(req, completionHandler: { (data : NSData!, response : NSURLResponse!, error : NSError!) -> Void in 

      //var json:NSDictionary = NSJSONSerialization.JSONObjectWithData(data: NSData!, options: NSJSONReadingOptions.allZeros, error: NSError!) 

      var json: NSDictionary = NSJSONSerialization.JSONObjectWithData(data, options: NSJSONReadingOptions.allZeros, error: NSErrorPointer.null()) as NSDictionary 

      self._courses = json["courses"]![0] as NSArray 

      println("\(json)") 
     }) 

     dataTask.resume() 
    } 

문제가 충돌합니다. dunno what exactly exactly

어떻게 해결할 수 있습니까? 그 라인에 대한 목표 - C와 스위프트 코드의 차이에서 나에게

답변

1

봐 도와주세요 : 당신은 스위프트의 배열 대신 배열 자체의 첫 번째 요소를 잡기 위해 노력하고

// objc 
self.courses = jsonObject[@"courses"]; 

// swift 
self._courses = json["courses"]![0] as NSArray 

. 이전 코드와 일치하도록 다음으로 변경하십시오.

self._courses = json["courses"]! as NSArray 
+0

또한 사전이 아닌 배열인지 확인하십시오. –