2016-11-06 3 views
0

안녕하세요. 내 서버에서 요청을 받으려고하는데 내 로그를 확인하고 최종 종점을 지정하지 않아도 엔드 포인트를 히트하지 못했습니다. 엔드 포인트는 요청 필드에 추가 된 권한을 필요로합니다. json 값을 가져 와서 테이블 셀로 표시하려고합니다. 하지만 값을 검색하려고하면 nil을 반환합니다. 끝점에 도달하려고 시도하지 않습니다. 필자는 print 문을 print("Session)"에 넣어서 dataWithRequest를 호출했는지 확인하려고 시도했으나 실패한 경우 확인했습니다. 제발 내가 여기서 뭐 잘못하고있는 거니? 당신의 Info.plist enter image description here신속한 GET 요청을 할 때 엔드 포인트에 도달 할 수 없습니다.

업데이트에이 일을 추가 할 수

func getLocalData() -> [[String:AnyObject]] { 
     var json:[[String:AnyObject]]? 
     let endPoint = "http://******************" 

     let url:NSURL? = NSURL(string: endPoint) 
     let session = NSURLSession.sharedSession() 

     let request:NSMutableURLRequest = NSMutableURLRequest(URL: url!) 

     request.HTTPMethod = "GET" 
     request.setValue("application/json", forHTTPHeaderField: "Content-Type") 
     request.addValue(token!, forHTTPHeaderField: "Authorization-Header") 


     let task = session.dataTaskWithRequest(request) {(data, response, error) -> Void in 
      print("Session") //not able to get in here 
      guard let data = data where error == nil else { 
       //network error 
       print("Error with network: \(error?.localizedDescription)") 
       return 
      } 

      let httpResponse = response as! NSHTTPURLResponse//HTTPURLResponse 
      let statusCode = httpResponse.statusCode 

      if statusCode == 200 { 
       do { 
        print("Here buddy") 
        json = try NSJSONSerialization.JSONObjectWithData(data, options: .AllowFragments) as? [[String: AnyObject]] 
        // return json 
       } 

       catch { 
        print("Error in json") 
       } 
      } 
     } 

     task.resume() 

     print("JSON: \(json)") //prints nil as it never attempts to make the request to the server 

     return json 
} 

내 TableListController에

내가이 함수를 호출하려고 시도하고 그것은 fatal error: unexpectedly found nil while unwrapping an Optional value

class DealListController: UITableViewController { 
    let myDeals = DealList() 
    var dealsArray = [] 

    override func awakeFromNib() { 
     super.awakeFromNib() 
     dealsArray = myDeals.getLocalData()! //complains about error here 
    } 
} 
+0

엔드 포인트는 HTTP입니까? –

+0

@DanhHuynh http. 내가 heroku – user3497437

답변

1

에 대해 불평 :하자 값을 반환하는 대신 완성 사용자를 사용하십시오.

func getLocalData(completion: (json: [[String:AnyObject]]?) -> Void) { 
    let endPoint = "http://******************" 

    let url:NSURL? = NSURL(string: endPoint) 
    let session = NSURLSession.sharedSession() 

    let request:NSMutableURLRequest = NSMutableURLRequest(URL: url!) 

    request.HTTPMethod = "GET" 
    request.setValue("application/json", forHTTPHeaderField: "Content-Type") 
    request.addValue("", forHTTPHeaderField: "Authorization-Header") 


    let task = session.dataTaskWithRequest(request) {(data, response, error) -> Void in 
     print("Session") //not able to get in here 
     guard let data = data where error == nil else { 
      //network error 
      print("Error with network: \(error?.localizedDescription)") 
      completion(json: nil) 
      return 
     } 

     let httpResponse = response as! NSHTTPURLResponse//HTTPURLResponse 
     let statusCode = httpResponse.statusCode 

     if statusCode == 200 { 
      do { 
       print("Here buddy") 
       let json = try NSJSONSerialization.JSONObjectWithData(data, options: .AllowFragments) as? [[String: AnyObject]] 
       // return json 
       completion(json: json) 
      } 

      catch { 
       print("Error in json") 
       completion(json: nil) 
      } 
     } 
    } 

    task.resume() 
} 

그리고 : // 또는 https : //

myDeals.getLocalData { json in 
    print("json: \(json)") 
    dealsArray = json! 
} 
+0

에 서버를 배포했습니다. 그냥 info.plist를 확인 했으므로 이미 추가되었습니다. – user3497437

+0

값을 반환하려면 어떻게해야합니까? – user3497437

+0

'getLocalData' 함수는 작업 완료 직전 json을 반환하므로 json 항상 제로가되고 앱 추락 –