领域:无法推断通用参数“Element”

问题描述 投票:0回答:1

我正在尝试将“Realm”与“stackoverflow”上找到的几行代码一起使用。 我收到一个神秘的编译错误: 无法推断通用参数“Element” 上线:let dogs = List() 每次我使用 List<> 时都会出现此错误。

我已经尝试了一切,清理构建,退出Xcode,从头开始创建一个新项目,但仍然存在这个错误......

import SwiftUI
import RealmSwift

class Dog: Object {
    @objc dynamic var name = ""
    @objc dynamic var age = 0
}

class Person: Object {
    @objc dynamic var name = ""
    let dogs = List<Dog>()
}

struct ContentView: View {
    
    var body: some View {
        VStack {
            Image(systemName: "globe")
                .imageScale(.large)
                .foregroundStyle(.tint)
            Text("toto")
                .onAppear {
                    
                    let myDog = Dog()
                    myDog.name = "Rex"
                    myDog.age = 5
                    hop(myDog: myDog)
                }
        }
        .padding()
    }
    
    func hop(myDog: Dog) {
        let realm = try! Realm() 
        
        let person = Person()
        person.name = "Tim"
        person.dogs.append(myDog) 
        
        try! realm.write {
            realm.add(person) 
        }
    }
}
realm
1个回答
0
投票

欢迎来到SO。

第一件事是将 @objc 与 Swift 混合;没有理由这样做(事实上,不这样做)。此时请坚持使用 Swift 语法。

所以两个Realm模型应该是这样的

class Dog: Object {
    @Persisted var name = ""
    @Persisted var age = 0
}

class Person: Object {
    @Persisted var name = ""
    @Persisted var dogs = RealmSwift.List<Dog>() //specify RealmSwift here*
}

第二件事是在

.onAppear
函数中 - 每当调用 .onAppear 时,都会实例化一个狗对象,一个人对象将被实例化,并且两者都会写入 Realm。随着时间的推移,最终结果是您将拥有一个充满 Tim 和 Rex 的数据库,但这可能不是您想要的。

此处需要隐式使用

*

RealmSwift.List
以避免与 SwiftUI 的
List
发生名称冲突。

© www.soinside.com 2019 - 2024. All rights reserved.