【发布时间】:2014-07-01 01:19:36
【问题描述】:
issue 在我的 Xcode 项目中生成警告。这已在 2.2.3 版本中得到解决(补丁版本更改,即问题存在于 2.2.2 中)。
我之前使用的 Podfile:
pod 'AFNetworking', '~> 2.0'
这匹配所有 2.0+ 版本,但将匹配限制为小于 3.0,即忽略主要版本更改。
由于我需要的更改很重要(我不希望在编写代码时出现警告)并且仅在 2.2.3+ 版本中可用,因此我想要我的 pod 的规范,例如
pod 'AFNetworking', '>= 2.2.3 & < 3.0'
请注意,我仍然不希望一个主要版本的碰撞把所有事情都搞砸了,如果我只使用这是可能的:
pod 'AFNetworking', '>= 2.2.3'
因为这也将匹配 3.0..
问题是Cocoapods 不允许这样做并在解析自身时拒绝它并出现错误:
ArgumentError - Illformed requirement `">= 2.2.3 & < 3.0"`
参考:
据我所知,在解析 Podfile 时,版本规范与正则表达式匹配:
quoted_operators = OPS.keys.map { |k| Regexp.quote k }.join '|'
PATTERN = /\A\s*(#{quoted_operators})?\s*(#{Version::VERSION_PATTERN})\s*\z/
文件:cocoapods-core-0.32.1/lib/cocoapods-core/requirement.rb https://github.com/CocoaPods/Core/blob/master/lib/cocoapods-core/requirement.rb
这种模式只允许一种规范..
【问题讨论】:
标签: objective-c cocoapods