ios - 创建一个使用 RealmSwift 的自定义框架

标签 ios swift frameworks realm

在一个简单的项目中使用 realm 时,我使用了 realm 说明中的以下步骤:

  1. Download the latest release of Realm and extract the zip.
  2. Go to your Xcode project’s “General” settings. Drag RealmSwift.framework and Realm.framework from the appropriate Swift-versioned directory for your project in ios/, osx/, tvos/ or watchos/ directory to the “Embedded Binaries” section. Make sure Copy items if needed is selected (except if using Realm on multiple platforms in your project) and click Finish.
  3. In your unit test target’s “Build Settings”, add the parent path to RealmSwift.framework in the “Framework Search Paths” section.
  4. If using Realm in an iOS, tvOS or watchOS project, create a new “Run Script Phase” in your app’s target’s “Build Phases” and paste the following snippet in the script text field:

bash "${BUILT_PRODUCTS_DIR}/${FRAMEWORKS_FOLDER_PATH}/Realm.framework/strip-frameworks.sh"

我需要创建一个自定义框架,以便我可以在应用程序之间共享多个类。这些类使用 Realm 和 RealmSwift 框架。

所以我创建了一个自定义框架并添加了一些类。然而,为了让这些类起作用,我需要在我的自定义框架中有一个到 Realm 框架的链接。

我不确定如何在步骤 2 中完成此操作,它指出将 Realm 和 RealmSwift 框架拖到项目常规设置的“嵌入部分”中。但是对于框架项目,没有嵌入式部分。有“链接的框架和库”部分。我将 realm 和 realmSwift 框架拖到那里。但是自定义框架不会构建,它说找不到 RealmSwift 的模块。

我不确定在框架项目中搜索路径是否与常规 xcode 项目(即 $(PROJECT_DIR) )相同,我不确定我应该期望看到哪个级别的 Realm 和我的项目浏览器中的 RealmSwift 框架。

最佳答案

使用框架和库非常烦人,如果你的框架没有打包到 .framework 中,那么你可能会做这样的事情,可能会奏效:

  1. 为你的框架创建一个文件夹,添加一些源文件
  2. 添加一个.podspec,依赖的是Realm和RealmSwift,其他值可以借鉴其他pod
  3. 创建一个普通的应用项目
  4. 使用 :path 指向您的文件夹,将您的框架安装到带有 cocoapods 的应用程序项目中,这将同时安装 realm 和 realmswift
  5. 现在您可以正常使用 realm 编写您的框架而无需硬链接(hard link)

对于 cocoapods 和框架相关的东西,检查 this tutorial

对于框架项目,我通常做的是避免将第三方库/框架打包到我的.framework 中,对此我有 2 个解决方案:

  1. 让用户完成工作,意味着您将创建完成 block 并让他们将其保存到自己的 Realm
  2. 仅将第三方库的 header 包含到您的项目中,并希望它在没有源文件的情况下构建,这仅适用于 header 很少的简单第三方项目,可能不适用于 Realm

关于ios - 创建一个使用 RealmSwift 的自定义框架,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40900451/

相关文章:

ios - CGBitmapInfo 值在 iOS 上的表现

ios - 将值附加到数据数组并保存在 Userdefault swift 中

ios - 在查询解析表之前获取位置查询

ios - 架构 i386 的 undefined symbol : "SpeechKitApplicationKey"

ios - 如何更改坐标注释的图像?

ios - info.plist 中的可执行文件名应该是什么?

xcode - 当父 View Controller 有背景时 UITableView 插入

java - 纯 Java 中的依赖注入(inject)

objective-c - 在一个库中声明变量或函数并在另一个库中定义它

ios - SwiftUI ForEach View 第一次未更新