【问题标题】:Xcode can't see objects added via CocoapodsXcode 看不到通过 Cocoapods 添加的对象
【发布时间】:2015-09-15 05:12:26
【问题描述】:

我有一个podfile 定义了以下 pod。

platform :ios, '8.0'
use_frameworks!

target 'LifeStream' do
pod 'SSKeychain'
pod 'LiveSDK'
pod 'Alamofire', :git => 'https://github.com/Alamofire/Alamofire.git', :branch => 'swift-2.0'
end

我安装了 pod 并打开了我的工作区。我发现 Alamofire 的任何用法都可以正常工作,因为它的 Swift 2 版本将项目作为框架导入。

但是,当我尝试使用 SSKeychain 类时,我收到了一个

使用未解析的标识符“SSKeychain”

这同样适用于我尝试在 LiveSDK 中使用的任何类。

我的项目根目录中有一个桥头,并且项目已配置为使用它。

#ifndef Header_h
#define Header_h

#import "SSKeychain/SSKeychain.h"
#import "LiveSDK/LiveConnectClient.h"

#endif /* Header_h */

如果我将 #import

#import "SSKeychain/SSKeychain.h"

#import "SSKeychain.h"

Xcode 无法编译,因为它找不到文件。所以我假设桥头正在工作,因为我的桥头现在构建的方式不会产生任何因找不到标题而导致的编译器错误。

桥头文件

框架搜索路径

我还将我的项目根目录添加到框架搜索路径中。

链接框架

最后,我也将所有框架链接到项目。

我的设置是否遗漏了什么?近一个星期以来,我一直无法让 Cocoapods 为我的项目工作。我什至创建了一个全新的项目,认为我的只是搞砸了;这并没有改变任何事情。我不知道该怎么做才能解决这个问题。

编辑

在做了一些额外的研究之后,我found a blog post 表明你必须在用户标题搜索中包含你的 Pods 目录

一位评论者还提到,如果您正在使用更新的 Cocoapods Frameworks 对 Swift 的支持,那么它将需要包含 Frameworks/** 搜索路径。我已经包含了 Pods/** 和 Frameworks/** 但仍然有同样的问题。

further reading 之后,它开始听起来像是 Cocoapods 的限制。据我了解,您不能在一个项目中同时使用库和框架。

【问题讨论】:

  • 您尝试更新可可豆荚了吗?我的意思是 gem install cocoa pods,因为我似乎遇到了同样的问题,这对我有帮助!

标签: ios xcode cocoapods xcode7-beta2


【解决方案1】:

在 Podfile 中使用 use_frameworks! 后,像 SSKeychain 这样的 Objective-C Pod 也会被构建为框架。

实际的问题是,在使用框架时,只有模块导入在桥接头中起作用。此外,您可能希望完全摆脱桥接头,因为在使用框架时没有必要,它们可以直接在 Swift 中导入。

【讨论】:

  • 对不起,我不知道该怎么做。我已经删除了桥接头,以及在我的构建设置中对它的引用。 Swift 仍然找不到 LiveSDK 或 SSKeychain 框架。当我使用import SSKeychain 时,我得到了No such model 'SSKeychain' 编译器错误。
  • 这最终解决了我的问题。当我收到这些错误时,我已经删除了 use_frameworks!从我的 podfile 中可以看到只是恢复为静态而不是动态。一旦我把它放回去,移除桥并在我的课堂上添加import,一切都完美地结合在一起。感谢您的帮助。
  • 如果你们中的一个人能更清楚地展示解决方案,我将非常感激......我不知道我是否可以完全摆脱我的桥接头,因为我集成了一些库就像用 Objective-C 编写的 parse.com 一样。
  • 我正在为此苦苦挣扎。我可以添加@import SSKeyChain、构建、归档、运行和其他任何东西,但是在导入语句下我仍然有一条红线说“未找到模块 SSKeyChain”?当它起作用时,这怎么可能?
【解决方案2】:

澄清你应该怎么做才能让它发挥作用:

  1. 确保在您的 Podfile 中包含 use_frameworks!
  2. 是否有桥接头并不重要。保持不变
  3. 在您的 SWIFT 文件中使用 import Podname

就是这样,你可以走了。当然,您可能需要清理您的项目或删除派生数据文件夹。构建然后你就可以使用它了。

【讨论】:

    【解决方案3】:

    如果您不使用任何 swift pod,

    尝试删除 Podfile 中的 use_frameworks!

    在终端上运行 pod install。

    清理和构建!

    我花了将近半个小时修复它,我尝试在搜索路径上添加这些路径或重新添加桥接头,但错误是一样的。

    因此,就我而言,桥接头文件不是问题,它在 Podfile 上。

    希望对你有帮助!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-02-18
      • 1970-01-01
      • 2015-03-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多