【问题标题】:Value of type has no member 'measure' when using XCTest on Xcode 8 beta在 Xcode 8 beta 上使用 XCTest 时,类型的值没有成员“度量”
【发布时间】:2016-11-01 20:05:32
【问题描述】:

我正在使用 Xcode 8 beta,当我创建一个包含单元测试的 iOS 项目时,我在 Podfile 上添加了 cocoapods

source 'https://github.com/CocoaPods/Specs.git'
platform :ios, '8.0'
use_frameworks!

pod 'RealmSwift'
pod 'Reachability', '~> 3.2'
pod 'Alamofire', '~> 3.0'
pod 'ChameleonFramework/Swift'
pod 'SwiftyBeaver'
pod 'GMStepper'

然后我运行命令来初始化cocoapods

pod install

之后我打开project.xcworkspace 文件,然后我收到以下错误:

Swift 编译器错误

'[ProjectName]Tests' 类型的值没有成员度量'

同上错误

命令 /usr/bin/ditto 失败,退出代码为 1

我只是做了一些简单的事情来创建我的工作区,就像我过去在 Xcode 7.3 中所做的那样,但这次我做不到。

以及解决这个问题的想法?

【问题讨论】:

  • “我添加了 cocoapods”——请描述你是如何做到的。
  • @JonReid 好的,我编辑我的问题添加我的Podfile
  • 我也有同样的问题。你找到解决办法了吗?
  • @thewarri0r9 不,我没有。当我更新到最新版本的 Xcode 后,我就可以毫无问题地创建项目了。

标签: ios xcode xctest xcode8


【解决方案1】:

经过几个月的研究,我终于解决了这些错误。问题出在我的cocoapods 文件上。我必须为主项目和Unit Test 项目指定目标。这就是我的cocoapods 文件现在的样子:

source 'https://github.com/CocoaPods/Specs.git'
platform :ios, '9.0'
use_frameworks!

target "ProjectName" do
    pod 'RealmSwift'
    pod 'Reachability', '~> 3.2'
    pod 'Alamofire', '~> 3.0'
    pod 'ChameleonFramework/Swift'
    pod 'SwiftyBeaver'
    pod 'GMStepper'
end

target "ProjectNameTests" do
    pod 'RealmSwift'
    pod 'Reachability', '~> 3.2'
    pod 'Alamofire', '~> 3.0'
    pod 'ChameleonFramework/Swift'
    pod 'SwiftyBeaver'
    pod 'GMStepper'
end

post_install do |installer|
    installer.pods_project.targets.each do |target|
        target.build_configurations.each do |config|
            config.build_settings['SWIFT_VERSION'] = '3.0'
        end
    end
end

然后我运行pod update 并清理了项目,当我构建项目时,所有Unit Tests 错误都消失了。

【讨论】:

    【解决方案2】:

    我希望我对这个问题有更好的了解,并能就错误的原因提供更详细的解释。我非常不喜欢“神奇”的解决方案,但不了解它们为什么会起作用。话虽如此,神奇的解决方案总比没有好太多了......

    我遇到了上述问题,在寻找解决方案时遇到了这个 SO question,但不幸的是没有遇到解决方案。出于沮丧,我尝试清理我的项目(产品 > 清理),这解决了问题。

    我怀疑有关 cocoapods 设置的某些东西会导致某种“剩菜”,但需要比我更有经验的人来深入研究细节。

    【讨论】:

    • 一个(产品 -> 清洁)加上一个(产品 -> 构建)为我做了。
    【解决方案3】:

    这真的太晚了,您可能已经找到了解决方案。我带着同样的问题来到这里,但没有看到答案,所以我只是发布以供参考。

    func measure( () -> Void)

    ...好像消失了。

    public func measureBlock(block: () -> Void)
    

    ...虽然有效。

    【讨论】:

    • 我也有同样的问题。你找到解决办法了吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-08-14
    • 2021-01-05
    • 2019-07-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多