RxTest:体系结构x86_64和arm64的未定义符号 [英] RxTest: Undefined symbols for architecture x86_64 and 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)
推荐答案
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屋!