2016-11-06 4 views
0

Привет, я пытаюсь получить запрос на получение с моего сервера, но я не могу попасть в конечные точки, так как я проверил свои журналы и им даже не попал в конечную точку. Конечной точке требуется авторизация, которая была добавлена ​​в поле запроса. Я пытаюсь получить значения json и отображать их как ячейку таблицы. Но когда я пытаюсь получить значения, они возвращают нуль. Он никогда не пытается попасть в конечную точку. Я попытался поместить заявление печати print("Session)", чтобы проверить, вызывает ли он dataWithRequest, но если этого не сделать. Пожалуйста, я делаю что-то неправильно здесь?Не удалось попасть в конечную точку при выполнении запроса GET в swift

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: // или https: //? –

+0

@ DanhHuynh http. Я развернул сервер на heroku – user3497437

ответ

1

Пусть добавить эти вещи в вашем Info.plist enter image description here

Update: Пусть используйте обработчик завершения, вместо того, чтобы возвращать значение

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() 
} 

И:

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

, он уже был добавлен, так как я только что проверил info.plist – user3497437

+0

, но я хочу вернуть значение, как я могу это сделать – user3497437

+0

Функция getLocalData вернет json непосредственно перед завершением задачи, поэтому json всегда быть nil, и авария приложения –

Смежные вопросы