当前位置: 首页 > 面试题库 >

如何在Swift for Realm模型中设置主键

左仰岳
2023-03-14
问题内容

我在一个新的iOS Swift项目中使用Realm。我将Xcode 6.0.1与iOS SDK 8.0和Realm 0.85.0一起使用

我正在尝试使用新的Realm主键功能,以便可以进行操作addOrUpdateObject

这是一个示例模型:

import Foundation
import Realm

class Foo: RLMObject {
    dynamic var id = 0
    dynamic var title = ""

    func primaryKey() -> Int {
        return id
    }
}

以及我如何尝试添加/更新新对象:

let foo = Foo()
foo.title = titleField.text
foo.id = 1

// Get the default Realm
let realm = RLMRealm.defaultRealm()

// Add to the Realm inside a transaction
realm.beginWriteTransaction()
realm.addOrUpdateObject(foo)
realm.commitWriteTransaction()

我收到此错误:

RLMExecption’,原因:“ Foo”没有主键,无法更新

这是主键上的文档。我可能没有正确设置它:
http
:
//realm.io/docs/cocoa/0.85.0/api/Classes/RLMObject.html" target="_blank">html#//api/name/primaryKey

最新的文档现在在这里:https
:
//realm.io/docs/objc/latest/api/Classes/RLMObject.html#//api/name/primaryKey


问题答案:

primaryKey需要是一个返回主键属性名称的类函数,而不是返回主键值的实例方法。

class Foo: RLMObject {
    dynamic var id = 0
    dynamic var title = ""

    override class func primaryKey() -> String? {
        return "id"
    }
}


 类似资料:
  • 我在一个新的iOS Swift项目中使用Realm。我使用Xcode 6.0.1和iOS SDK 8.0和Realm0.85.0 我正在尝试使用新的Realm主键特性,以便可以执行。 下面是一个示例模型: 以下是主键上的文档。我可能没有正确设置: <罢工> http://realm.io/docs/cocoa/0.85.0/api/classes/rlmobject.html#//api/name

  • 问题内容: 我有一个像这样的模型: 我想迁移并同时托管这两个主机是主键。 问题答案: 我将以稍微不同的方式来实现。 我将使用默认的主键(自动字段),并使用meta class属性, 它将充当“代理”主键列。 如果您确实要创建多列主键,请查看此应用

  • 问题内容: 我想用一些动态问题来填充表单(在此处提示): 一切正常,除了模型实际上是Answers [“ {{question.Name}}”],而不是评估后的Answers [“ GenderQuestion”]。如何动态设置型号名称? 问题答案: http://jsfiddle.net/DrQ77/ 您只需将javascript表达式放入中。

  • 问题内容: 我在同一包中有2个班级。这两个类都具有main方法。现在,我想构建一个jar文件。我想建立2个jar文件,这些文件使用不同的主要功能作为默认主要功能。 例如 如何在NetBeans IDE中进行操作? 我找到了答案。您可以在netbeans中轻松地做到这一点:1)右键单击项目>属性>运行>选择类frm并下拉列表。在netbeans中是如此简单。Netbeans摇摇欲坠! 问题答案: 在

  • 问题内容: 在我的文件中,具有以下内容。但是,容器不会选择主机名值。有任何想法吗? 当我检查容器中的主机名时,它没有启动。 问题答案: 我发现使用时主机名对其他容器不可见。事实证明这是一个已知问题(也许是一个已知功能),其中一部分讨论是: 我们可能应该在文档中添加有关使用主机名的警告。我认为它很少有用。 就容器网络而言,分配主机名的正确方法是定义一个别名,如下所示: 不幸的是,这 仍然 无法使用。

  • 在我的文件中,我有以下内容。但是容器没有选择主机名值。有什么想法吗? 当我检查容器中的主机名时,它不会拾取。