RealmSwift 10.52.3

RealmSwift 10.52.3

测试已测试
Lang语言 SwiftSwift
许可 Apache-2.0
发布最后发布2024 年 8 月
SPM支持 SPM

Thomas GoyneRealm CIMongoDB Realm 维护。



RealmSwift 10.52.3

Realm

Realm 是一个在手机、平板或可穿戴设备上直接运行移动数据库。此仓库包含 iOS、macOS、tvOS 和 watchOS 版本的 Realm Swift 和 Realm Objective-C 的源代码。

为什么使用 Realm

  • 对开发者直观: Realm 的面向对象数据模型易于学习,无需 ORM,并允许您编写更少的代码。
  • 专为移动设计: Realm 功能丰富、轻量级,并有效地使用内存、磁盘空间和电池寿命。
  • 设计用于离线使用: Realm 的本地数据库在磁盘上持久化数据,因此应用程序在离线和在线时工作得同样好。
  • 设备同步:使在实时跨用户、设备和后端保持数据同步变得简单。使用 模板应用程序创建云后端 免费开始。

面向对象:简化您的代码

Realm 专为移动开发者构建,注重简洁性。惯用的面向对象数据模型可以为您节省数千行代码。

// Define your models like regular Swift classes
class Dog: Object {
    @Persisted var name: String
    @Persisted var age: Int
}
class Person: Object {
    @Persisted(primaryKey: true) var _id: String
    @Persisted var name: String
    @Persisted var age: Int
    // Create relationships by pointing an Object field to another Class
    @Persisted var dogs: List<Dog>
}
// Use them like regular Swift objects
let dog = Dog()
dog.name = "Rex"
dog.age = 1
print("name of dog: \(dog.name)")

// Get the default Realm
let realm = try! Realm()
// Persist your data easily with a write transaction 
try! realm.write {
    realm.add(dog)
}

Live Objects: 构建响应式应用程序

Realm的实时对象意味着任何地方更新的数据都会自动在所有地方更新。

// Open the default realm.
let realm = try! Realm()

var token: NotificationToken?

let dog = Dog()
dog.name = "Max"

// Create a dog in the realm.
try! realm.write {
    realm.add(dog)
}

//  Set up the listener & observe object notifications.
token = dog.observe { change in
    switch change {
    case .change(let properties):
        for property in properties {
            print("Property '\(property.name)' changed to '\(property.newValue!)'");
        }
    case .error(let error):
        print("An error occurred: (error)")
    case .deleted:
        print("The object was deleted.")
    }
}

// Update the dog's name to see the effect.
try! realm.write {
    dog.name = "Wolfie"
}

SwiftUI

Realm与SwiftUI直接集成,自动更新您的视图,无需您手动操作。

struct ContactsView: View {
    @ObservedResults(Person.self) var persons
    
    var body: some View {
        List {
            ForEach(persons) { person in
                Text(person.name)
            }
            .onMove(perform: $persons.move)
            .onDelete(perform: $persons.remove)
        }.navigationBarItems(trailing:
            Button("Add") {
                $persons.append(Person())
            }
        )
    }
}

完全加密

数据可以在传输中和静态中被加密,即使是最敏感的数据也能得到保护。

// Generate a random encryption key
var key = Data(count: 64)
_ = key.withUnsafeMutableBytes { bytes in
    SecRandomCopyBytes(kSecRandomDefault, 64, bytes)
}

// Add the encryption key to the config and open the realm
let config = Realm.Configuration(encryptionKey: key)
let realm = try Realm(configuration: config)

// Use the Realm as normal
let dogs = realm.objects(Dog.self).filter("name contains 'Fido'")

入门指南

我们支持通过Swift Package Manager、CocoaPods、Carthage或导入动态XCFramework来安装Realm。

有关更多信息,请参阅我们文档中的详细说明:docs

对免费使用包括云后端和同步功能的模板应用程序(a template application)感兴趣吗?创建MongoDB Atlas账户

文档

文档可以在docs.mongodb.com/realm/sdk/ios/找到。
API参考位于docs.mongodb.com/realm-sdks/swift/latest/

获取帮助

  • 需要帮助处理代码? 在Stack Overflow上的realm标签下寻找之前的问题或者提问。对于可能被认为太宽泛的问题,可以访问开发者社区论坛
  • 要报告错误? 在GitHub上创建问题。如果可能的话,请提供Realm版本、完整的日志、Realm文件以及展示问题的项目。
  • 有功能请求? 在GitHub上创建问题。告诉我们该功能应该做什么以及为什么需要这个功能。

构建Realm

如果您不想使用预编译版本,可以从源代码构建 Realm。

先决条件

  • 构建 Realm 需要 Xcode 11.x 或更高版本。
  • 构建 Realm 文档需要 jazzy

一旦您准备好所有必要的先决条件,构建 Realm.framework 只需一次性命令:sh build.sh build。第一次构建 Realm 时需要网络连接来下载核心二进制文件。

运行 sh build.sh help 查看您可以执行的所有操作(构建 ios/osx,生成文档,测试等)。

用户贡献

查看CONTRIBUTING.md获取更多详情!

行为准则

该项目遵循MongoDB行为准则。参与本项目即表示你将遵守此准则。如有不可接受的行为,请向[email protected]报告。

许可证

Realm Objective-C 和 Realm Swift 在 Apache 2.0 许可证下发布。
Realm Core 同样在 Apache 2.0 许可证下发布,并可在此处找到。

反馈

如果你使用 Realm 并对其感到满意,请考虑发布一条推文提及 @realm 分享你的想法!

如果你不喜欢它,请告诉我们你希望改进的地方,这样我们可以进行修复!