我有一个包含所有个字符的数据集。然后,我有几个列表,我要向其中添加某些字符。
这是我到目前为止用快速代码得到的:
//
// Lists.swift
//
// Created by Guest on 28.01.19.
// Copyright © 2019 Dom. All rights reserved.
//
// https://academy.realm.io/posts/realm-primary-keys-tutorial/
import Foundation
import RealmSwift
class Lists: Object {
// making use of primary keys
@objc dynamic var listID = UUID().uuidString
@objc dynamic var listName : String = ""
@objc dynamic var listDesc : String = ""
@objc dynamic var listProgressPercentage : Int = 0
// lists all characters associated with this list
var charIDs = List<Characters>()
override static func primaryKey() -> String? {
return "listID"
}
}
并且:
//
// Characters.swift
//
// Created by Guest on 28.01.19.
// Copyright © 2019 Dom. All rights reserved.
//
import Foundation
import RealmSwift
class Characters: Object {
// get charID from dictionary.txt later
@objc dynamic var charID = 0
@objc dynamic var character : String = ""
}
我的问题: -列表仍然为空。现在如何添加新列表 ,并添加例如25个对“字符”中的对象的不同对象引用?
感谢您的帮助!
答案 0 :(得分:0)
我没有看到代码有什么问题。这是我所做的测试。我创建了两个列表和两个字符,然后将第一个字符添加到第一个列表,将第二个字符添加到第二个列表。
let l0 = Lists()
l0.listName = "list 0"
let l1 = Lists()
l1.listName = "list 1"
let c0 = Characters()
c0.character = "char 0 list 0"
c0.charID = 0
let c1 = Characters()
c1.character = "char 1 list 1"
c1.charID = 1
l0.charIDs.append(c0)
l1.charIDs.append(c1)
然后将数据写入Realm
do {
let realm = try Realm()
try! realm.write {
realm.add(l0)
realm.add(l1)
}
} catch let error as NSError {
print(error.localizedDescription)
}
,然后使用Realm Studio检查领域,字符和列表均已正确写入,并且列表CharIDs属性链接回该字符。
可能引起问题的不是代码,而是对象的命名方式。例如,列表对象不是列表。它是一个单个对象,其中包含类型列表的属性以及描述该特定列表的其他属性。同样,Characters对象也不是一堆字符,它是具有描述该字符属性的单个字符。
假设这些对象是用于冒险类游戏的,我们希望跟踪哪些角色访问了游戏中的某个区域。
第一个对象用于游戏中的特定区域,该区域描述了该区域并包含访问过的角色的列表属性。
class AreaVisitedObject: Object {
@obj dynamic var: area_name = ""
@obj dynamic var: area_id = ""
var charsWhoVisitedList = List<Character>()
@objc dynamic var char_id = UUID().uuidString
override static func primaryKey() -> String? {
return "area_id"
}
...
然后是描述每个字符的字符对象
class CharacterObject: Object {
@objc dynamic var char_name = ""
@objc dynamic var char_id = UUID().uuidString
override static func primaryKey() -> String? {
return "char_id"
}
...
请注意,我向角色添加了一个主键对象,因为您似乎不会有重复的字符,因此它将确保每个字符都是唯一的,并且可以被该uuid引用。
希望有帮助。