【译】ObjectBox官方文档——ObjectBox与Kotlin

YunC · · 374 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

【译】ObjectBox官方文档——ObjectBox与Kotlin

转载请注明出处
第一次翻译文档,水平有限,如有任何错误和不妥,望指正。此外如想知道与 RealmGreenDAO 的对比请查看这篇博客
官网:ObjectBox
官方示例:Github

ObjectBoxAndroid 平台上为 Kotlin 提供了完整的支持。这允许使用 Kotlin 类(常规类和data类)来创建实体。通过对 Kotlin 的支持,你可以高效地构建更快的应用程序。

配置

配置方式与 java 项目的配置相同,请参阅简介页面。此外,我们提供了一个很小的 Kotlin 扩展函数的依赖库。我们会对它持续更新,所以让我们知道你对它的建议和意见。只需将其添加到模块依赖项:

dependencies {
    compile "io.objectbox:objectbox-android:$objectboxVersion"
    compile "io.objectbox:objectbox-kotlin:$objectboxVersion"
}

当您完成了Sync project,就可以在 Kotlin 中定义实体。

Kotlin实体

Kotlin,你应该这样定义ID属性:

@Id var id: Long = 0

ID 必须是一个var(不是val),因为 ObjectBoxput一个新实体后为其分配 ID。并且,ID 应该是基础数据类型的Long,同时,赋值为特殊值0,将它标记为一个新的实体。

所以一个简单的数据类是这样的:

@Entity
data class Note(
        @Id var id: Long = 0,
        val text: String
)

实体类的构造器

ObjectBox需要调用构造函数来创建对象。它将选择下面其中一种:

  • all-args 构造函数: 如果 ObjectBox 找到一个与所有持久化属性匹配的构造函数(类型和名称匹配),它将优先调用它。
  • no-args 构造函数: 如果没有找到 all-args 构造函数,ObjectBox 则会调用 no-args (默认)构造函数初始化字段。

注意:Kotlindata类通常会提供兼容的 all-args 构造函数。但是,如果是临时属性或着映射关系属性是构造函数的一部分,则ObjectBox不能使用它。

在Kotlin中定义映射关系

Kotlin中定义关系非常类似于标准JavaObjectBox中定义关系。在Kotlin中,通常会使用一个lateinit修饰符来表示关系属性。如上述连接所述“初始化魔术”也是相同的(这句翻译相当的别扭,不是很清楚它指的什么,希望有人能纠正)。

示例:

@Entity
class Order {
    @Id var id: Long = 0
 
    lateinit var customer: ToOne<Customer>
}
 
@Entity
class Customer {
    @Id var id: Long = 0
 
    @Backlink
    lateinit var orders: List<Order>
}

本文来自:简书

感谢作者:YunC

查看原文:【译】ObjectBox官方文档——ObjectBox与Kotlin

374 次点击  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet