【问题标题】:I can't import classes from a newly created cocoa pod我无法从新创建的可可豆荚中导入类
【发布时间】:2021-01-03 17:34:29
【问题描述】:

我刚刚从一个 git 存储库 (https://github.com/snakajima/bonjour-http) 创建并发布了两个新的公共可可豆荚。

这是第二个 pod 的 Podspec。

Pod::Spec.new do |s|
  s.name             = 'bonjour-http-server'
  s.version          = '0.4.0'
  s.summary          = 'HTTP over Bonjour in Swift.'
 
  s.description      = <<-DESC
  HTTP over Bonjour in Swift for iOS and macOS.
                       DESC
 
  s.homepage         = 'https://github.com/snakajima/bonjour-http'
  s.license          = { :type => 'MIT', :file => 'LICENSE' }
  s.author           = { 'Satoshi Nakajima' => 'satoshi.nakajima@gmail.com' }
  s.source           = { :git => 'https://github.com/snakajima/bonjour-http.git', :tag => s.version.to_s }
 
  s.ios.deployment_target = '13.0'
  s.osx.deployment_target = '10.14'
  s.source_files = 'core/BonjourService.swift', 'core/BonjourRequest.swift', 'core/BonjourResponse.swift', 'core/BonjourParser.swift'
  s.swift_versions = '5.0'
  s.dependency 'CocoaAsyncSocket'
end

现在,我正在尝试使用另一个项目中的第二个 pod (bonjour-http-server)。我在 Podfile 中添加了以下行并运行“pod install”,成功将其添加到项目中。

  pod 'bonjour-http-server', :git => 'https://github.com/snakajima/bonjour-http.git'

当我尝试从 swift 文件中导入此模块时,Xcode 将像这样完成代码。

import bonjour_http_server

但是,我无法使用此模块中的任何类,例如 BonjourService。 Xcode 不会对其进行代码完成,并且编译器会失败。

我是 Cocoa Pods 的新手,我很可能在某个地方犯了错误 - 无论是在发布阶段还是在导入阶段。

如果有人可以帮助我解决这个问题,我将不胜感激。完整的源代码可在https://github.com/snakajima/bonjour-http 获得。

【问题讨论】:

    标签: swift cocoapods


    【解决方案1】:

    基于Access Control官方文档:

    您的代码中的所有实体(除了一些特定的例外,如 本章稍后介绍)具有 默认访问级别 如果您自己没有指定明确的访问级别,则为内部。作为一个 结果,在许多情况下,您不需要指定显式访问 代码中的级别。

    如果您声明这样的类:(来自您的 repo 的示例)

    @objc class BonjourService: NSObject {
        ...
    }
    

    默认情况下只能从同一模块内访问。

    因此,要向外界(在您的模块之外)公开一个类、一个函数等,您至少需要将其声明为public

    @objc public class BonjourService: NSObject {
        ...
    }
    

    您可以在上述文档中找到有关 Swift 的访问级别的更多详细信息。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-12-01
      • 2023-03-12
      • 1970-01-01
      • 2017-08-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多