2015-11-16 4 views
0

Я пытаюсь понять, что означает 'doneFinishPickingMediaWithInfo' в следующем определении быстрой функции.синтаксис определения быстрой настройки

func imagePickerController(picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : AnyObject]) { 
} 

Я вижу, что «информация» означает тип коллекции словарь, но я не понимаю, почему он предшествует «didFinishPickingMediaWithInfo». Я новичок в быстром развитии и развитии iOS в целом, пожалуйста, ответьте, вероятно, на тривиальный вопрос. Спасибо

ответ

1

От documentation:

Изменение внешнего Имя параметра Поведение при Methods

Иногда это полезно, чтобы обеспечить внешнее имя параметра для первого параметра а метода, даже если это не по умолчанию поведение. Для этого вы можете добавить явное внешнее имя самостоятельно.

С другой стороны, если вы не хотите, чтобы обеспечить внешнее имя для второго или последующего параметра метода, переопределить поведение по умолчанию с помощью символа подчеркивания (_) в качестве явного внешнего имени параметра для этого параметра ,

Это означает, что в вашем методе слово didFinishPickingMediaWithInfo является именем переменной, используемой при вызове метода. Однако вы получаете данные от этого в переменной info. Например, в вашем случае метод будет называться imagePickerController(picker: <UIImagePickerController>, didFinishPickingMediaWithInfo: <info>), потому что didFinishPickingMediaWithInfo заменяет info.

Надеюсь, что это поможет!

+0

Ач Благодарю. Это немного странно, почему эта структура существует - я думаю, это делает вызовы функций более читаемыми. –

+0

@IevgeniiFedorenko Да, в Swift есть много вещей, которые вначале не имеют смысла, например, выражение 'if let', но как только вы привыкнете к ним, они очень удобны. Я настоятельно рекомендую прочитать книгу [Swift Programming Language] (https://itunes.apple.com/us/book/swift-programming-language/id881256329?mt=11). Это очень удобно. – Zoyt

1

Это позволяет указать параметры как псевдоним для более подробной версии. Поэтому вместо использования didFinishPickingMediaWithInfo в качестве переменной для управления вам нужно будет использовать только локальный параметр (или псевдоним), который называется info.

Задание внешних параметров Имена

Вы пишете имя внешнего параметра перед именем он поддерживает, разделенных пробелом локального параметра:

func someFunction(externalParameterName localParameterName: Int) { 
    // function body goes here, and can use localParameterName 
    // to refer to the argument value for that parameter 
} 

Источник: https://developer.apple.com/library/mac/documentation/Swift/Conceptual/Swift_Programming_Language/Functions.html#//apple_ref/doc/uid/TP40014097-CH10-ID167

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