使用cocoapods的`use_frameworks!`时,Realm.io构建错误

3

目标:在ObjC项目中使用Swift pods

步骤:

  • 通过添加use_frameworks!修改Podfile
  • 运行pod install(Cocoapods版本1.0.0)
  • 再次构建工作区

结果(错误):

  • 我得到以下Realm.io错误(从pod 'Realm'安装,因为我在ObjC中编码):
    • RLMRealm.h:51:1: 重复的类“RLMRealm”的接口定义
    • RLMRealm.h:95:62: 属性已有先前的声明
    • RLMRealm.h:105:38: 属性已有先前的声明
    • RLMRealm.h:110:56: 属性已有先前的声明
    • RLMRealm.h:115:38: 属性已有先前的声明
    • RLMRealm.h:297:28: 属性已有先前的声明
    • RLMRealm.h:493:1: 重复的类“RLMNotificationToken”的接口定义

解决问题的步骤:

  • (在编辑历史记录中的先前步骤)
  • 删除所有pods并重新安装(没有效果)
  • 在Build Phases中取消链接Pods框架并重新链接(没有效果)
  • 清理并构建/清理构建文件夹并构建(没有效果)
  • 尝试使用""<>@import导入(目前我的代码中所有的导入都是用#import <Realm/Realm.h>完成的)(使用#import <Realm#import "Realm进行搜索)(没有效果)
  • 创建新项目,复制文件并pod install(没有效果)
  • 在项目文件夹中搜索"@interface RLMNotificationToken",只找到一个RLMRealm.h文件的实例,所以我没有重复
  • 删除除了AppDelegate.h/m之外的所有文件可以成功构建
  • 搜索#import "R#import <R@import R并找到一个错误的#import <RLMRealm.h>

问题:

我非常困惑,不知道要做什么。

那么我该如何解决这些构建错误呢?为什么会出现这种情况?或者说我应该尝试哪些其他的问题解决步骤呢?(感激您对任何一个问题的回答)

你尝试过清理构建文件夹了吗(不要和仅清理"clean"混淆)?在Xcode中,按住Alt/Option键进入产品菜单,选择“清理构建文件夹...”选项;看看是否有帮助。 - AustinZ
@AustinZ - 很好的想法!不幸的是,那也没用。你还有什么建议吗? - smileham
3个回答

2
显然,我的一个文件中有一个#import <RLMRealm.h>(不确定是怎么进去的)。我将其更改为@import Realm;,现在一切都正常了。之前搜索时我错过了这一点,只有在检查代码时才发现。有趣的是它可以与库一起使用,但不能与框架一起使用。好吧,问题解决了,现在一切都很好。

1

Swift的Realm pod名称为"RealmSwift"。我认为你正在使用objective-c pod。

请查看此链接Realm for Swift。您还可以拖放realm框架,这将避免您一直面临的错误。


我正在使用Objective-C编写代码...不过,'RealmSwift'难道不是为Swift优化的,并且在ObjC中有些不兼容(无法使用泛型类型等)吗? - smileham
两种语言有不同的Pods,它们不能互换使用。如果您的目标是使用Swift,则必须使用'RealmSwift'。 - Priyansh
哦,我不能在一个 Objective-C 项目中使用 Swift Pod,即使使用了 use_frameworks! - smileham
Swift Pod 没有问题。可能需要一些 Realm 安装步骤来使用混合的 Pods? - smileham

0
请检查您导入 Realm 类的所有位置。在我的情况下,我导入了 #import <RLMArray.h>。应该是 #import <Realm/RLMArray.h>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接