Realm.io 使用 cocoapods 时出现构建错误`use_frameworks!`
Realm.io build errors when using cocoapods `use_frameworks!`
目标: 能够在 ObjC 项目中使用 swift pods
已采取的步数:
- 已通过附加
use_frameworks!
更改 Podfile
- 运行
pod install
(Cocoapods 版本 1.0.0)
- 再次构建工作区
结果(错误):
- 我收到以下 Realm.io 错误(pod 从
pod 'Realm'
安装,因为我在 ObjC 中编码):
RLMRealm.h:51:1: Duplicate interface definition for class 'RLMRealm'
RLMRealm.h:95:62: Property has a previous declaration
RLMRealm.h:105:38: Property has a previous declaration
RLMRealm.h:110:56: Property has a previous declaration
RLMRealm.h:115:38: Property has a previous declaration
RLMRealm.h:297:28: Property has a previous declaration
RLMRealm.h:493:1: Duplicate interface definition for class 'RLMNotificationToken'
采取的问题解决步骤:
- (导致此简化问题的编辑历史记录中的前一个)
- 全部删除pods并重新安装(无效)
- 在构建阶段取消链接 Pods 框架并重新链接(无效)
- 清理并构建/清理构建文件夹并构建(无效)
- 尝试使用
""
、<>
和 @import
导入(目前我代码中的所有导入都是使用 #import <Realm/Realm.h>
完成的)(使用 #import <Realm
搜索和 #import "Realm
)(无效)
- 创建新项目,复制文件,安装 pod(无效)
- 在项目文件夹中搜索了
"@interface RLMNotificationToken"
,只找到了 RLMRealm.h
文件的一个实例,所以我没有重复项
- 删除除
AppDelegate.h/m
之外的所有文件,构建成功
- 搜索了
#import "R
、#import <R
、@import R
发现了一个流氓#import <RLMRealm.h>
问题:
坦率地说,我现在真的很困惑,不知道该怎么做。
那么我该如何修复这些构建错误呢?为什么会这样?或者我应该尝试其他哪些解决问题的步骤?(对这些问题中的任何一个的回答将不胜感激)
swift 的 Realm pod 是 "RealmSwift"
。我认为您正在使用 objective-c pod。
看看这个 link Realm for Swift。您还可以拖放领域框架,这将避免您一直面临的错误。
显然我的一个文件中有一个 #import <RLMRealm.h>
(不知道它是怎么进来的)。我将其更改为 @import Realm;
,现在一切正常。我之前在搜索时错过了它,只是在梳理我的代码时才发现它。有趣的是它适用于库但不适用于框架。好吧,想通了,现在一切都很好。
请检查所有导入 Realm 的地方 类。在我的例子中,我导入了 #import <RLMArray.h>
。应该是#import <Realm/RLMArray.h>
目标: 能够在 ObjC 项目中使用 swift pods
已采取的步数:
- 已通过附加
use_frameworks!
更改 - 运行
pod install
(Cocoapods 版本 1.0.0) - 再次构建工作区
Podfile
结果(错误):
- 我收到以下 Realm.io 错误(pod 从
pod 'Realm'
安装,因为我在 ObjC 中编码):RLMRealm.h:51:1: Duplicate interface definition for class 'RLMRealm'
RLMRealm.h:95:62: Property has a previous declaration
RLMRealm.h:105:38: Property has a previous declaration
RLMRealm.h:110:56: Property has a previous declaration
RLMRealm.h:115:38: Property has a previous declaration
RLMRealm.h:297:28: Property has a previous declaration
RLMRealm.h:493:1: Duplicate interface definition for class 'RLMNotificationToken'
采取的问题解决步骤:
- (导致此简化问题的编辑历史记录中的前一个)
- 全部删除pods并重新安装(无效)
- 在构建阶段取消链接 Pods 框架并重新链接(无效)
- 清理并构建/清理构建文件夹并构建(无效)
- 尝试使用
""
、<>
和@import
导入(目前我代码中的所有导入都是使用#import <Realm/Realm.h>
完成的)(使用#import <Realm
搜索和#import "Realm
)(无效) - 创建新项目,复制文件,安装 pod(无效)
- 在项目文件夹中搜索了
"@interface RLMNotificationToken"
,只找到了RLMRealm.h
文件的一个实例,所以我没有重复项 - 删除除
AppDelegate.h/m
之外的所有文件,构建成功 - 搜索了
#import "R
、#import <R
、@import R
发现了一个流氓#import <RLMRealm.h>
问题:
坦率地说,我现在真的很困惑,不知道该怎么做。
那么我该如何修复这些构建错误呢?为什么会这样?或者我应该尝试其他哪些解决问题的步骤?(对这些问题中的任何一个的回答将不胜感激)
swift 的 Realm pod 是 "RealmSwift"
。我认为您正在使用 objective-c pod。
看看这个 link Realm for Swift。您还可以拖放领域框架,这将避免您一直面临的错误。
显然我的一个文件中有一个 #import <RLMRealm.h>
(不知道它是怎么进来的)。我将其更改为 @import Realm;
,现在一切正常。我之前在搜索时错过了它,只是在梳理我的代码时才发现它。有趣的是它适用于库但不适用于框架。好吧,想通了,现在一切都很好。
请检查所有导入 Realm 的地方 类。在我的例子中,我导入了 #import <RLMArray.h>
。应该是#import <Realm/RLMArray.h>