каково использование ~› в кокоаподах

Я хочу знать, для чего используется «~>», потому что я нахожу, что они одинаковы ниже:

pod 'AFNetworking','~> 2.0.3'

pod 'AFNetworking','2.0.3'

person Mil0R3    schedule 26.11.2013    source источник
comment
В основном вы делаете это, чтобы ваше приложение не ломалось с более высокими версиями (возможно, несовместимыми модулями). Тем не менее, он может применять / получать выгоду от «незначительных» обновлений.   -  person Honey    schedule 31.01.2018
comment
Если вы указываете версию, используя ~› предположим, в вашем файле pod, то есть pod 'AFNetworking', '~› 2.0.3', тогда он будет установлен, если есть новая версия 2.0.x и до 3.0, где, как если бы вы указывали с «AFNetworking», «2.0.3» будет установлена ​​только эта версия.   -  person MiTal Khandhar    schedule 07.02.2018


Ответы (4)


~> (оператор оптимизма) используется, когда вы хотите указать версию «до следующего основного | второстепенный | исправить». Например:

~> 0.1.2 вы получите версию до 0.2 (но не включая 0.2 и выше)

~> 0.1 вы получите версию до 1.0 (но не включая 1.0 и выше)

~> 0 даст вам версию 0 и выше (так же, как если бы она была опущена)

где 0.1.2 будет означать «Я хочу именно эту версию»

Подробнее об этом

person Alladinian    schedule 26.11.2013
comment
Меня интересует одна вещь. Если я укажу, скажем: '~> 7.6', я должен получить все версии от 7.6.0 до 8.0 (не включены). Но при запуске реального pod install я получаю 7.6, даже если существует версия 7.8. Вы сказали, что это также означает, что я хочу именно эту версию, в чем тогда смысл. Как получить последний, соответствующий правилу ~>? - person Jakub Truhlář; 15.10.2016
comment
@JakubTruhlář Для точной версии я имел в виду спецификатор без ~>. Также обратите внимание, что Cocoapods будет разрешать зависимости на основе нескольких других факторов, таких как целевой SDK, совместимость версии с другими модулями, версия Swift и т. д. - person Alladinian; 15.10.2016
comment
Мне приходит на ум одна вещь. Начиная с Cocoapods 1.0, исходный репозиторий не обновляется в пределах pod install. Поэтому, если версия 7.8 из приведенного выше примера будет выпущена после моего последнего обновления исходного репозитория, я получу последний известный исходный репозиторий (например, 7.6). - person Jakub Truhlář; 15.10.2016
comment
@JakubTruhlář, это с сайта CocoaPods: используйте установку модуля для установки новых модулей в вашем проекте. Даже если у вас уже есть Podfile и вы уже запускали pod install; поэтому, даже если вы просто добавляете/удаляете модули в проект, уже использующий CocoaPods. Используйте обновление модуля [PODNAME] только в том случае, если вы хотите обновить модули до более новой версии. - person user1105951; 23.03.2017
comment
Пожалуйста, помогите мне понять... ~› 0.1.2 даст вам версию до 0.2 -- я в замешательстве, потому что 0.2, кажется, намного ниже, чем семантика версии оптимизма, которую, кажется, просит. Например, если вам нужна версия 0.1.2, которая в моем понимании будет 12-й итерацией (0.0.1, 0.0.2, 0.0.3 и т. д.), зачем вам запрашивать версию 0.0.2 (которая в мой разум 2-я итерация) ?? - person KarmaDeli; 02.03.2019
comment
@KarmaDeli 0.2 как в 0.2.0 не 0.0.2 - person Alladinian; 02.03.2019

  • ~> 6.0 предоставит вам последнюю версию перед следующей версией, которая является 7.0, но не включает версию 7.0.

  • ~> 6.0.0 предоставит вам последнюю версию перед следующей версией, которая является 6.1.0, но не включает версию 6.1.0.

????

person Abo3atef    schedule 02.01.2019

Хотя большинство приведенных выше ответов верны, они отвечают на вопрос, используя примеры, а не фактически объясняя, что происходит, что затрудняет понимание концепции. Главное, что нужно знать, чтобы понять, как работает оптимистичный оператор, это то, что Cocopods смотрит, насколько специфичен номер версии, чтобы определить, как он будет интерпретировать оптимистичный оператор.

Синтаксис номера версии передает информацию re. тип обновления, которое выпускает разработчик. Этот синтаксис слева направо относится к обновлениям Major.Minor.Patch.

Cocoapods ищет самый конкретный элемент в номере версии, чтобы определить, как он будет интерпретировать оптимистичный оператор. Итак, если номер версии содержит информацию об обновлениях исправлений, т.е. это выглядит примерно так: ~> 1.1.2 - тогда обновления исправлений - это то, на чем Cocopods фокусируется при реализации оптимистического оператора. Аналогичным образом, если номер версии соответствует только незначительным обновлениям, т. е. выглядит примерно так: ~> 1.2, то Cocoapods будет фокусироваться только на обновлениях, которые являются либо незначительными обновлениями, либо исправлениями при реализации оптимистического оператора.

Номер версии ~> 1.0.1 указывает Cocopods установить самое последнее обновление версии, если это обновление является обновлением PATCH; Основные или второстепенные обновления следует игнорировать.

Номер версии ~> 1.1 сообщает Cocoapods об установке самых последних доступных обновлений, если эти обновления являются либо ИСПРАВЛЕНИЕМ, либо МНОЖЕСТВЕННЫМИ обновлениями, и он должен игнорировать любые основные обновления.

person thecloud_of_unknowing    schedule 12.11.2019

оптимистичный оператор ~>:

'~> 0.1.2' Version 0.1.2 and the versions up to 0.2, not including 0.2 and higher
'~> 0.1' Version 0.1 and the versions up to 1.0, not including 1.0 and higher
'~> 0' Version 0 and higher, this is basically the same as not having it.
For more information, regarding versioning policy, [see][1]:
person Adnan Aftab    schedule 26.11.2013
comment
ссылка битая, хотя есть ссылка на текущую документацию - person Antek; 05.03.2018
comment
Вместо того, чтобы минусовать, вы могли бы обновить ссылку :) Некоторая конструктивная работа. - person Adnan Aftab; 06.03.2018
comment
вы правы, хотя это не я минусую! :) Извините, так и надо было сделать. (я имею в виду, что я должен был отредактировать, а не минусовать;)) - person Antek; 06.03.2018
comment
Это бесполезно, начиная с 0, было бы полезнее знать, как это работает с ~> 1.0.0, ~> 1.0 и ~> 1. - person Jonathan.; 29.09.2019