【问题标题】:Will I be able to use Realm on Linux, with Perfect?我可以在 Linux 上使用 Realm 吗?
【发布时间】:2016-02-26 20:02:23
【问题描述】:

Perfect - https://www.perfect.org - 是一个新的网络服务器,它允许您在服务器端使用与在设备上相同的语言。它将在今年年底前发布时兼容Linux版本的Swift——大概是因为它只是使用了Swift的标准库,

它有 MongoDB、MySQL、PostgreSQL 的连接器。

目前,我正在使用 Swift 中的 Realm 数据库开发一个应用程序。我也可以在服务器端使用 Realm 吗?它只是使用 Swift 标准库吗?

【问题讨论】:

  • Realm 是为客户端数据存储而设计的,对于服务器你应该只使用 MongoDB、MySQL、PostgreSQL 等。
  • 另外,Realm 的核心不是开源的,你必须依赖 realm.io 发布一个预构建的 Linux 二进制核心

标签: ios linux swift realm perfect


【解决方案1】:

到目前为止,Realm 为 Cocoa 相关开发提供了两种绑定:Realm Objective-C 和 Realm Swift。后者基于前者,并且对 Objective-C API 进行了浅层包装,采用了 Swift 标准库中的类型和协议,并公开了更方便的 API。这种架构而不是纯 Swift 绑定的原因是 Swift 不允许接口 C++ 代码,但 Realm 的底层存储引擎基于此。 这意味着即使使用 Realm Swift,您也可以将 Foundation 作为传递依赖,因为我们依赖它,例如RLMObject 使用键值编码,与 KVO 互操作,使用 Foundation 的值类型(NSNumberNSArray,...)。

因此,假设 Linux 版本的 Swift 不会提供与 Linux 兼容的 Foundation 发行版,在 Linux 上使用 Realm 将需要 Realm 的“纯”Swift 绑定,这还不可能,一个替代目标-C 绑定,它避免了 Foundation,或 Foundation 的成熟替代实现,GNUstep 可能是候选者,但这在我们这边完全未经测试。

更新 #1

Swift 与 Foundation API 的 Swift 实现存根一起开源,作为 OS API 的 shim,因此它可以在 Linux 和其他没有 Apple Foundation 的平台上便携使用。从那时起,这个存根被项目贡献者的实际实现所填充,并且是 Swift 3 版本的一部分,因此它可以用于纯 Swift 项目

但这并不能解决 Realm Swift 不是纯 Swift 并且基于 Realm Objective-C 的普遍问题。所以它依赖于 Objective-C 运行时和 Foundation 的可用性。

更新 #2

我们最近发布了Realm Mobile Platform,您可以在本地或公共云上运行它。所以这使得在 Linux 上使用 Realm 成为可能。但到目前为止,企业版通过 Node.js 绑定仅支持服务器端访问。

【讨论】:

  • 正在努力创建一个开源替代 Foundation - github.com/PureSwift/SwiftFoundation - 这可能会引起人们的兴趣。
  • 我相信 swift.org 说 Foundation 正在使用 Swift 2.2 开源。
  • 这里的更新过期了。尽管有努力使 Foundation 到纯 Swift 可用,但只要 Realm Swift 基于 Realm Objective-C,它将依赖于 Objective-C 运行时和 Apple 的 Objective-C Foundation 实现的细节。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-03-05
  • 1970-01-01
  • 2021-01-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多