4

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

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

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

4

1 回答 1

4

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

因此,假设 Linux 版本的 Swift 不会提供与 Linux 兼容的 Foundation 发行版,在 Linux 上使用 Realm 将需要 Realm 的“纯”Swift 绑定,这还不可能,一个替代的 Objective-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 移动平台,您可以在本地或公共云上运行该平台。所以这使得在 Linux 上使用 Realm 成为可能。但是到目前为止,使用 Node.js 绑定的企业版仅支持服务器端访问。

于 2015-11-26T10:23:08.087 回答