2016-07-07 50 views
3

目標:能夠在ObjC項目中使用快捷莢Realm.io使用的CocoaPods`use_frameworks時生成錯誤`

所採取的步驟:通過附加use_frameworks!

  • 改變的Podfile
  • pod install(Cocoapods version 1.0。0)
  • 重新構建的工作區

結果(錯誤):

  • 我收到以下錯誤Realm.io(從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'

解決問題的步驟:

  • (在編輯歷史上那些導致了這個簡化的問題)
  • 刪除所有吊艙和重新安裝(無效果)
  • 無關聯莢構建階段框架和重新鏈接(無效果)
  • 清理和內置/清理build文件夾,並內置(無效果)
  • 試圖與""進口,<>@import(目前在我的代碼全部進口與#import <Realm/Realm.h>完成)(無效果)(與#import <Realm#import "Realm搜索)
  • 創建新的項目,在複製的文件,並安裝了吊艙(無效果)
  • 搜索項目文件夾爲"@interface RLMNotificationToken",只發現了RLMRealm.h文件的一個實例,所以我沒有重複
  • 刪除所有我的文件除了AppDelegate.h/m成功生成
  • 搜索:#import "R#import <R@import R發現流氓#import <RLMRealm.h>

問題:

我坦率地說真的很困惑,不知道該怎麼做。

那麼如何解決這些構建錯誤?這是爲什麼發生?或者我應該嘗試其他解決問題的步驟?(對這些問題的答案將不勝感激)

+0

你有沒有嘗試清理你的生成文件夾(不要與'乾淨''混淆)?在Xcode中,按住Alt/Option鍵並轉到「產品」菜單並選擇「清理生成文件夾...」選項;看看它是否有幫助。 – AustinZ

+0

@奧斯汀 - 好想法!不幸的是,這也沒有奏效。還有什麼建議嗎? – smileham

回答

2

很明顯,我的一個文件裏有一個#import <RLMRealm.h>(不知道那裏是怎麼回事)。我將其更改爲@import Realm;,現在全部正常工作。我錯過了之前的搜索,只有在梳理我的代碼時才發現它。有趣的是,它與圖書館合作,但與框架無關。那麼,算出來,現在都很好。

1

swift的境界莢是"RealmSwift"。我認爲你正在使用Objective-C pod。

看看這個鏈接Realm for Swift。您還可以拖放領域框架,這可以節省您遇到的錯誤。

+0

雖然我在Objective-C中編寫代碼,但不是爲Swift優化的RealmSwift,它與ObjC有些不兼容(將不能使用泛型類型等)? – smileham

+0

兩種語言都有不同的豆莢。你不能交替使用它們。如果你的目標是迅速使用,那麼你將不得不使用'RealmSwift'。 – Priyansh

+0

哦,我不能在objc項目中使用swift,即使使用'use_frameworks!'? – smileham

0

請檢查所有導入Realm類的地方。在我的情況下,我導入了#import <RLMArray.h>。應該是#import <Realm/RLMArray.h>