You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

升级Xcode 14.1后,Package中无法调用CGRect.null和CGPoint.zero

问题:Xcode 14.1下FontPens包的CGRect.null/CGPoint.zero报错

我有一个名为FontPens的macOS包依赖,其定义了BoundsPen类,代码片段如下:

import Foundation
...
public class BoundsPen: Pen {

      var bounds = CGRect.null
      private var currentPoint = CGPoint.zero
      ....

升级至Xcode 14.1后,上述两行代码分别抛出错误**"Type 'CGRect' has no member 'null'"和"Type 'CGPoint' has no member 'zero'"**。在应用中导入Foundation后调用CGPoint.zero和CGRect.null是正常的,请问是否存在无需修改包源码的解决办法?


解决办法
  • 给系统类添加扩展补全成员
    在你的项目代码中添加以下Swift扩展,为CGRect和CGPoint补全包代码中需要的静态成员:

    import CoreGraphics
    
    extension CGRect {
        static let null = CGRect.zero
    }
    
    extension CGPoint {
        static let zero = CGPoint(x: 0, y: 0)
    }
    

    说明:新版SDK中CGRect.null已被废弃,官方推荐使用CGRect.zero替代;CGPoint.zero本身仍存在,但部分包的target环境可能未正确引入CoreGraphics的相关定义,通过扩展显式声明后,依赖包的代码就能正常访问这些成员。

  • 使用SPM补丁功能(可选)
    如果你不想在项目中添加扩展,可以创建本地补丁文件修改FontPens包中报错的两行代码,然后在你的Package.swift中通过patch参数引用该补丁。这种方式无需修改原仓库源码,但需要维护补丁文件适配后续版本。


内容的提问来源于stack exchange,提问作者Łukasz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 10:40:58