RxTest:体系结构x86_64和arm64的未定义符号 [英] RxTest: Undefined symbols for architecture x86_64 and arm64

查看:165
本文介绍了RxTest:体系结构x86_64和arm64的未定义符号的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正尝试从 Raywenderlich RxSwift 本书:

I am trying to run the following test from Chapter 16: Testing with RxTest of Raywenderlich RxSwift book:

import XCTest
import RxSwift
import RxTest
@testable import Testing

class TestingViewModel : XCTestCase {

var viewModel: ViewModel!
var scheduler: ConcurrentDispatchQueueScheduler!

override func setUp() {
super.setUp()

viewModel = ViewModel()
scheduler = ConcurrentDispatchQueueScheduler(qos: .default)
}

func testColorNameIsRayWenderlichGreenWhenHexStringIs006636() {

// 1
let colorNameObservable = viewModel.colorName.asObservable().subscribeOn(scheduler)

// 2
viewModel.hexString.value = "#006636"

// 3
XCTAssertEqual("rayWenderlichGreen", try! colorNameObservable.toBlocking().first()!)
 }
}

但是我在模拟器上收到此错误:

But I get this error on the simulator:

体系结构x86_64的未定义符号: "RxCocoa.DriverSharingStrategy的类型元数据",引用自: TestingViewModel.o中的TestingTests.TestingViewModel.testColorNameIsRayWenderlichGreenWhenHexStringIs006636()->() "RxCocoa中的RxCocoa.DriverSharingStrategy的协议见证表:RxCocoa中的RxCocoa.SharingStrategyProtocol",引用自: TestingViewModel.o中的TestingTests.TestingViewModel.testColorNameIsRayWenderlichGreenWhenHexStringIs006636()->() "RxCocoa.SharedSequence.asObservable()-> RxSwift.Observable",引用自: TestingViewModel.o中的TestingTests.TestingViewModel.testColorNameIsRayWenderlichGreenWhenHexStringIs006636()->() ld:找不到架构x86_64的符号 clang:错误:链接器命令失败,退出代码为1(使用-v查看调用)

Undefined symbols for architecture x86_64: "type metadata for RxCocoa.DriverSharingStrategy", referenced from: TestingTests.TestingViewModel.testColorNameIsRayWenderlichGreenWhenHexStringIs006636() -> () in TestingViewModel.o "protocol witness table for RxCocoa.DriverSharingStrategy : RxCocoa.SharingStrategyProtocol in RxCocoa", referenced from: TestingTests.TestingViewModel.testColorNameIsRayWenderlichGreenWhenHexStringIs006636() -> () in TestingViewModel.o "RxCocoa.SharedSequence.asObservable() -> RxSwift.Observable", referenced from: TestingTests.TestingViewModel.testColorNameIsRayWenderlichGreenWhenHexStringIs006636() -> () in TestingViewModel.o ld: symbol(s) not found for architecture x86_64 clang: error: linker command failed with exit code 1 (use -v to see invocation)

iPhone 6s上的这个:

And This one on iPhone 6s:

体系结构arm64的未定义符号: "RxCocoa.DriverSharingStrategy的类型元数据",引用自: TestingViewModel.o中的TestingTests.TestingViewModel.testColorNameIsRayWenderlichGreenWhenHexStringIs006636()->() "RxCocoa中的RxCocoa.DriverSharingStrategy的协议见证表:RxCocoa中的RxCocoa.SharingStrategyProtocol",引用自: TestingViewModel.o中的TestingTests.TestingViewModel.testColorNameIsRayWenderlichGreenWhenHexStringIs006636()->() "RxCocoa.SharedSequence.asObservable()-> RxSwift.Observable",引用自: TestingViewModel.o中的TestingTests.TestingViewModel.testColorNameIsRayWenderlichGreenWhenHexStringIs006636()->() ld:找不到体系结构arm64的符号 clang:错误:链接器命令失败,退出代码为1(使用-v查看调用)

Undefined symbols for architecture arm64: "type metadata for RxCocoa.DriverSharingStrategy", referenced from: TestingTests.TestingViewModel.testColorNameIsRayWenderlichGreenWhenHexStringIs006636() -> () in TestingViewModel.o "protocol witness table for RxCocoa.DriverSharingStrategy : RxCocoa.SharingStrategyProtocol in RxCocoa", referenced from: TestingTests.TestingViewModel.testColorNameIsRayWenderlichGreenWhenHexStringIs006636() -> () in TestingViewModel.o "RxCocoa.SharedSequence.asObservable() -> RxSwift.Observable", referenced from: TestingTests.TestingViewModel.testColorNameIsRayWenderlichGreenWhenHexStringIs006636() -> () in TestingViewModel.o ld: symbol(s) not found for architecture arm64 clang: error: linker command failed with exit code 1 (use -v to see invocation)

在Raywenderlich的文档中不支持此问题论坛.

推荐答案

经过大量搜索,有人建议

After a lot of searches, As somebody suggests here for another similar issue I found that this error will be solved by importing RxCocoa.

这篇关于RxTest:体系结构x86_64和arm64的未定义符号的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆