我是Realm的新手,我试图保存一个带有数组的对象,但是我崩溃了,读取错误后发现Realm不接受数组,所以我删除了数组,但仍然得到每当我使用领域时都会出错。这是一个获取错误的示例代码:
let realm = RealmService.shared.realm
print(realm.objects(Person))
这是完整的错误:
Terminating app due to uncaught exception 'RLMException', reason: 'Property 'person' is declared as 'NSArray', which is not a supported RLMObject property type. All properties must be primitives, NSString, NSDate, NSData, NSNumber, RLMArray, RLMLinkingObjects, or subclasses of RLMObject
这是RealmService类:
import Foundation
import RealmSwift
class RealmService{
private init(){}
static let shared = RealmService()
var realm = try! Realm()
func create<T: Object>(_ object: T){
do{
try realm.write {
realm.add(object)
}
}catch{
post(error)
}
}
func update<T: Object>(_ object: T, with dictionary: [String: Any?]){
do{
try realm.write {
for (key,value) in dictionary{
object.setValue(value, forKey: key)
}
}
}catch{
post(error)
}
}
func delete<T: Object>(_ object: T ){
do{
try realm.write {
realm.delete(object)
}
}catch{
post(error)
}
}
func post(_ error: Error){
NotificationCenter.default.post(name: NSNotification.Name("RealmError"), object: error)
}
func observeRealmErrors(in vc: UIViewController, completion: @escaping (Error?)-> Void){
NotificationCenter.default.addObserver(forName: NSNotification.Name("RealmError"), object: nil, queue: nil) { (notification) in
completion(notification.object as? Error)
}
}
func stopObserving(in vc: UIViewController){
NotificationCenter.default.removeObserver(vc, name: NSNotification.Name("RealmError"), object: nil)
}
}
更新:
人员班级:
import Foundation
import RealmSwift
class Person: Object{
@objc dynamic var name: String = ""
@objc dynamic var id: String = ""
@objc dynamic var phone: String = ""
@objc dynamic var country : String = ""
@objc dynamic var identifier: String = ""
@objc dynamic var gender : Int = 0
@objc dynamic var level: Int = 0
@objc dynamic var mena: Int = 0
@objc dynamic var moz: Int = 0
@objc dynamic var arafat: Int = 0
@objc dynamic var group: NSNumber = 0
convenience init(group: NSNumber, name: String, id: String, phone: String, country: String, identifier: String, gender: Int, level: Int) {
self.init()
self.name = name
self.phone = phone
self.id = id
self.country = country
self.identifier = identifier
self.gender = gender
self.level = level
self.group = group
}
}
答案 0 :(得分:0)
这似乎不是一个领域问题,但更多的是xCode。
*map*
。cmd + alt + shft + k
中的派生数据这通常可以解决许多问题,包括幻像断点。我曾经遇到一个非常奇怪的问题,那就是导致数据存在于领域文件中,但是当用代码访问时,它并不存在。在同事的计算机上测试后,我发现它是我的xCode。甚至以上方法也不能解决问题,在尝试了所有可以在线找到的内容之后,我在完全抹掉了以前的安装后重新安装了它,然后又重新工作了。
此外,将列表用于领域
/Users/signed-in-user/Library/Developer/Xcode/DerivedData