2016-05-03 11 views
1

Я только что открыл проект, с которым я не переделал через некоторое время, и заметил предупреждение: «Синтаксис объявления Curried будет удален в будущей версии Swift, используйте один список параметров».Передайте дополнительные параметры обработчику завершения без функции карри?

Я не совсем уверен, как превентивно удалить мою карриную функцию в этом случае (это кажется идеальным решением для меня). В настоящее время я использую один для передачи дополнительных параметров обработчику завершения.

func getCoursesForProfile(profileName: String, pageNumber: Int) { 
    if let url = NSURL(string:profileBaseURL + profileName + pageBase + String(pageNumber)) { 
     let task = NSURLSession.sharedSession().dataTaskWithURL(url, completionHandler: parseSessionCompletion(profileName, pageNumber: pageNumber)) 

     task.resume() 
    } 
} 

func parseSessionCompletion(profileName: String, pageNumber: Int)(data: NSData?, response: NSURLResponse?, error: NSError?) { 

Мой вопрос: Есть ли способ, чтобы выполнить удаление выделки при этом иметь многоразовую функцию для разбора «завершен сеанс»?

Единственный «простой» способ, с которым я собираюсь это сделать, состоял бы в том, чтобы иметь разные экземпляры класса и сохранить имя_файла/номер страницы за пределами возможностей функций .. но это кажется расточительным по-разному.

ответ

1

Currying не удаляется - это просто удобный синтаксис для определения функции карри, которая удаляется. Теперь вам нужно определить функцию curried, которая явно возвращает другую функцию (список с одним параметром).

Например, в вашем случае, вы хотите что-то вроде этого:

func parseSessionCompletion(profileName: String, pageNumber: Int) -> (data: NSData?, response: NSURLResponse?, error: NSError?) ->() { 

    // do something 

    return {data, response, error in 
     // do something else 
    } 
} 

Взгляните на proposal for the removal of the currying syntax для получения дополнительной информации об изменении.

+0

Я, по-видимому, проигнорировал фактические слова, используемые в предупреждении, и принял худшее. Ваш пример отлично работает. Благодаря! –

+0

@MythicsWinter С удовольствием помогите :) – Hamish

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

  • Нет связанных вопросов^_^