为Swift 3和Xcode 8构建领域

5
我正在按照这里给出的步骤构建Realm以在iOS项目中使用,我正在使用Xcode 8 beta 3:
我收到以下警告:
ld: warning: ignoring file .../Realm.framework/Realm, missing required architecture x86_64 in file .../Realm.framework/Realm (2 slices)
ld: warning: ignoring file .../RealmSwift.framework/RealmSwift, missing required architecture x86_64 in file .../RealmSwift.framework/RealmSwift (2 slices)

还有这个错误

Lipo: -remove's specified would result in an empty fat file

为什么会发生这种情况?

你好,Carpsen90,我刚刚意识到你提供了链接。你能否分享一下你使用的Xcode 8 beta版本?另外,在Xcode --> Preferences菜单 --> Locations选项卡中,你是否选择了Xcode 8.0命令行工具? - AustinZ
@AustinZ 我正在使用 Xcode 8 beta 3,命令行已设置为 Xcode 8。 - ielyamani
3个回答

3
请尝试以下更新的说明,应该适用于Beta 3版本:
  1. 克隆Realm Cocoa git存储库:git clone https://github.com/realm/realm-cocoa.git
  2. 打开Xcode项目。单击Realm项目,然后单击RealmSwift目标,再单击“Build Settings”选项卡,将Use Legacy Swift Language Version设置为Yes(如果构建Swift 2.3)或No(如果构建Swift 3)。
  3. 在包含git存储库的目录中运行以下命令:sh build.sh TARGET,其中TARGET是以下之一:ios-swiftosx-swifttvos-swiftwatchos-swift,具体取决于您要构建哪个平台。
  4. 构建完成后,请转到“build”目录,然后进入以您构建平台命名的目录(例如“ios”)。
  5. 打开“swift-2.3”或“swift-3.0”目录(取决于您构建的版本)。
  6. 按照此处指示进行步骤2的操作,并执行步骤3和4,将RealmSwift.frameworkRealm.framework拖入您的项目中。
如果这些方法不起作用,请在评论区留言。

有没有一种简单的方法将其集成到“carthage”工作流程中? - catalandres
1
@catalandres 我会研究一下如何让这个与Carthage配合工作。 - AustinZ
@Carpsen90 我需要再考虑一下并回复你。最后一个问题 - 你能否尝试删除派生数据和清理构建文件夹(如此处所述)? - AustinZ
1
@AustinZ 是的,我已经做了那个,非常感谢你的时间,我很感激。 - ielyamani
1
获得以下错误信息:clang: error: 找不到文件或目录:'/Users/mike/Projects/realm-cocoa/Realm/ObjectStore/src/impl/weak_realm_notifier.cpp' clang: error: 没有输入文件** 构建失败 ** - Michael Samoylov
显示剩余5条评论

2
为了获取RealmRealmSwift的Swift 3版本,我必须明确地指定master,将submodules设置为true,并在post_install钩子中添加一个Swift版本的设置:

use_frameworks!

target 'TARGET_NAME' do
    pod 'Realm', git: 'https://github.com/realm/realm-cocoa.git', branch: 'master', submodules: true
    pod 'RealmSwift', git: 'https://github.com/realm/realm-cocoa.git', branch: 'master', submodules: true

    post_install do |installer|
        installer.pods_project.targets.each do |target|
            target.build_configurations.each do |config|
                config.build_settings['SWIFT_VERSION'] = '3.0'
            end
        end
    end
end

1
这对我很有用,也避免了我在仅指定pod 'RealmSwift'和post install hook时遇到的编译错误。我认为Realm网站应该使用这些说明更新文档。谢谢。 - LucioB

0

1
尝试了一下,但是得到了这个错误信息:“如果你正在使用来自Git分支的Realm和/或RealmSwift,请在你的Podfile条目中添加'submodules:true'。” 因此我添加了 :submodules => true。该项目已经在Swift 3中,因此我不能降级代码。 - ielyamani
当运行应用程序并忽略编译器错误时,我会得到这个提示:“需要正确配置“使用传统的Swift语言版本”(SWIFT_VERSION)以供使用Swift的目标。使用[编辑>转换>为当前的Swift语法…]菜单选择一个Swift版本或使用构建设置编辑器直接配置构建设置。” - ielyamani
是的,但我忽略了它并且一直在正常使用Realm,在我的情况下它有效。 - PiterPan
在你的情况下,基础项目没有转换为Swift 3,对吧? - ielyamani
你正在使用CocoaPods的当前发布版本还是beta版本?如果你正在使用发布版本(v.1.0.1),你需要明确地在CocoaPod目标上设置“Use Legacy Swift Language Version”标志。这可以通过点击“Pods”项目,点击“RealmSwift”目标,进入“Build Settings”选项卡,并将标志更改为“Yes”或“No”来完成。 - AustinZ
显示剩余2条评论

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