iOS Swift Couchbase Lite主键和类配置
我正在通过couchbase lite在我的下一个iOS应用程序中使用它。我现在已经创建了一个名为Surah的模型。当然,我以后会有更多的模型课 基本上我这里有四个问题iOS Swift Couchbase Lite主键和类配置,ios,swift,couchbase,couchbase-lite,Ios,Swift,Couchbase,Couchbase Lite,我正在通过couchbase lite在我的下一个iOS应用程序中使用它。我现在已经创建了一个名为Surah的模型。当然,我以后会有更多的模型课 基本上我这里有四个问题 如何在couchbase lite中添加_id作为主键 因为我将有更多的课程,我将如何处理这些?因为我在创造 MutableDocument,这将如何区分我的每个类 正如我所看到的,我必须迭代我的每一项以进行批插入,对于大型数据集来说,这不会变得很慢吗 如何将具有大数据的查询结果转换为模型类数组。(在本例中为Surah阵列)
- 如何在couchbase lite中添加_id作为主键李>
- 因为我将有更多的课程,我将如何处理这些?因为我在创造 MutableDocument,这将如何区分我的每个类
- 正如我所看到的,我必须迭代我的每一项以进行批插入,对于大型数据集来说,这不会变得很慢吗
- 如何将具有大数据的查询结果转换为模型类数组。(在本例中为Surah阵列)
Surah类:可解码{
enum Keys: String, CodingKey { case _id case index case englishName case englishMeaning case name case place case count } var _id = "" var index = 1 var page = 1 var numberOfAyahs = 1 var englishName = "" var englishMeaning = "" var name = "" var place = "" var isFavorite = false var dictionary: [String: Any] { return ["_id": _id, "index": index, "page": page] } required init() {} required init(_id: String, index: Int, name: String, englishName: String, englishMeaning: String, place: String, count: Int) { self._id = _id self.index = index self.name = name self.englishName = englishName self.englishMeaning = englishMeaning self.place = place self.numberOfAyahs = count } required convenience init(from decoder: Decoder) throws { let container = try decoder.container(keyedBy: Keys.self) // defining our (keyed) container let _id: String = try container.decode(String.self, forKey: ._id) let index: Int = try container.decode(Int.self, forKey: .index) let name: String = try container.decode(String.self, forKey: .name) let englishName: String = try container.decode(String.self, forKey: .englishName) let englishMeaning: String = try container.decode(String.self, forKey: .englishMeaning) let place: String = try container.decode(String.self, forKey: .place) let count: Int = try container.decode(Int.self, forKey: .count) self.init(_id: _id, index: index, name: name, englishName: englishName, englishMeaning: englishMeaning, place: place, count: count) }}
let surahs = try JSONDecoder().decode([Surah].self, from: data!)
DispatchQueue.global(qos: .background).async {
//background code
do {
if let db = App.shared.database {
try db.inBatch {
for item in surahs {
let doc = MutableDocument(data: item.dictionary)
doc.setString("users", forKey: "type")
doc.setValue(Keys._id, forKey: item._id)
// doc.setValue(Keys.englishName, forKey: item.englishName)
try db.saveDocument(doc)
let index = IndexBuilder.valueIndex(items:
ValueIndexItem.expression(Expression.property("_id")), ValueIndexItem.expression(Expression.property("type")))
try db.createIndex(index, withName: "TypeNameIndex")
print("saved user document \(doc.string(forKey: "englishName"))")
}
}
}
} catch let error {
DispatchQueue.main.async {
seal.reject(error)
}
}
DispatchQueue.main.async {
seal.fulfill(surahs)
}
}
Meta.id
。
该字段的值是mutableDoc.getId()
也可以在创建时显式设置idDatabase.inBatch()
Meta.id
。
该字段的值是mutableDoc.getId()
也可以在创建时显式设置idDatabase.inBatch()
好的,得到主键部分。我这样添加主键…让doc=MutableDocument(id:item.\u id,data:item.dictionary)好的,得到主键部分。我这样添加主键…让doc=MutableDocument(id:item.\u id,data:item.dictionary)