2015-09-07 4 views
2

Это мой код ниже.taskIdentifier получение ошибки [Swift]

var placesTask = NSURLSessionDataTask() 

func fetchPlacesNearCoordinate(coordinate: CLLocationCoordinate2D, radius: Double, types:[String], completion: (([GooglePlace]) -> Void)) ->() 
    { 
    var urlString = "https://maps.googleapis.com/maps/api/place/nearbysearch/json?key=\(apiKey)&location=\(coordinate.latitude),\(coordinate.longitude)&radius=\(radius)&rankby=prominence&sensor=true" 
    let typesString = types.count > 0 ? types.joinWithSeparator("|") : "food" 
    urlString += "&types=\(typesString)" 
    urlString = urlString.stringByAddingPercentEscapesUsingEncoding(NSUTF8StringEncoding)! 

    if placesTask.taskIdentifier > 0 && placesTask.state == .Running { 
     placesTask.cancel() 
    } 
    UIApplication.sharedApplication().networkActivityIndicatorVisible = true 

    placesTask = session.dataTaskWithURL(NSURL(string: urlString)!) {data, response, error in 
     UIApplication.sharedApplication().networkActivityIndicatorVisible = false 
     var placesArray = [GooglePlace]() 
     if let json = (try? NSJSONSerialization.JSONObjectWithData(data!, options:[])) as? NSDictionary { 
     if let results = json["results"] as? NSArray { 
      for rawPlace:AnyObject in results { 
      let place = GooglePlace(dictionary: rawPlace as! NSDictionary, acceptedTypes: types) 
      placesArray.append(place) 
      if let reference = place.photoReference { 
       self.fetchPhotoFromReference(reference) { image in 
       place.photo = image 
       } 
      } 
      } 
     } 
     } 
     dispatch_async(dispatch_get_main_queue()) { 
     completion(placesArray) 
     } 
    } 
    placesTask.resume() 
    } 

Ошибка я получаю:

- [NSURLSessionDataTask taskIdentifier]: непризнанный селектор направлен например 0x7f8eba441e60

*** Нагрузочного приложение из-за неперехваченное исключением 'NSInvalidArgumentException', причина: '- [NSURLSessionDataTask taskIdentifier]: непризнанный селектор, отправленный в экземпляр 0x7f8eba441e60'

Я не уверен, какая часть кода пошла не так. Я попробовал google и использовал код примера, но ошибка продолжает поступать. Не уверен, что это из-за Xcode 7 beta 6

+0

Где вы объявляете, и установить, переменную 'placesTask'? – Robert

+0

@Robert Спасибо за ответ. Я объявляю это наверху. Я отредактировал мой пост –

+0

Выполняется отлично с Xcode 6.4, свойство доступно из iOs 7.0, которое требуется для Swift, так что это тоже не должно быть проблемой. Что произойдет, если вы нажмете Alt + щелчок или cmnd + щелкните свойство? –

ответ

1

Задача должна быть создана сеансом.

вар placesTask = NSURLSessionDataTask() Недопустимый

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