无法为Apple Watch编译RxCocoa

问题描述

我一直在尝试编译一个包含Apple Watch扩展目标的iOS项目。

该项目使用RxSwift / RxCocoa,可从官方文档中阅读并与watchOS兼容。

该项目在Apple Watch模拟器上编译并成功运行,但在真正的Apple Watch上失败,并出现以下错误

<img src="data:image/png;base64,....

之所以这样,是因为在RxCocoa内部的类扩展中声明的这三个常量是这样声明的:

Cannot find 'CGRectType' in scope
Cannot find 'CGPointType' in scope
Cannot find 'CGSizeType' in scope

由于该库应该与watchOS兼容,您是否知道有什么方法可以使其工作?

解决方法

我想您仍在使用旧版本的库(与watchOS的最新版本不兼容)

库中正确的定义应该类似于

#if arch(x86_64) || arch(arm64)
    let CGRectType = "{CGRect={CGPoint=dd}{CGSize=dd}}"
    let CGSizeType = "{CGSize=dd}"
    let CGPointType = "{CGPoint=dd}"
#elseif arch(i386) || arch(arm) || arch(arm64_32)
    let CGRectType = "{CGRect={CGPoint=ff}{CGSize=ff}}"
    let CGSizeType = "{CGSize=ff}"
    let CGPointType = "{CGPoint=ff}"
#endif

根据图书馆网站上的这两个讨论主题

Fix build for new arm64_32 architecture

Xcode 10 GM: Use of unresolved identifier 'CGRectType'

应该在该库的最新版本中对其进行修复