Ios 迅捷王国;类型为'的值;结果';“没有成员”;

Ios 迅捷王国;类型为'的值;结果';“没有成员”;,ios,swift,database,xcode,realm,Ios,Swift,Database,Xcode,Realm,我正在尝试从RealmDB获取数据,并按id进行筛选。正如Realm文档所示()我正在使用: let realm = try! Realm() let Result = realm.objects(DBName.self).filter("ID == %@", id) XCode在这两行中不显示任何警告或错误,但当用户尝试通过执行以下操作来使用结果时: print(Result.ID) 即使数据库中有ID字段,也会出现以下错误: 类型“Results”的值没有成员“

我正在尝试从RealmDB获取数据,并按id进行筛选。正如Realm文档所示()我正在使用:

    let realm = try! Realm()
    let Result = realm.objects(DBName.self).filter("ID == %@", id) 
XCode在这两行中不显示任何警告或错误,但当用户尝试通过执行以下操作来使用结果时:

    print(Result.ID)
即使数据库中有ID字段,也会出现以下错误:
类型“Results”的值没有成员“ID”
。我也无法访问任何其他字段

realm.objects(DBName.self).filter(“ID==%@”,ID)
这将返回
Results
ID
ID
的所有
DBName
对象。因此,返回的值是一个对象列表。这就是为什么错误显示
“Results”没有成员“ID”

如果100%确定其中有一个对象,可以尝试用这种方式检索第一个元素。(对于生产,您应该始终使用
guard
语句来防止崩溃,正如Jay在评论部分所建议的那样。)

realm.objects(DBName.self).filter(“ID==%@”,ID)。首先!
或者,如果您的
ID
是主键,则可以执行此操作

realm.object(类型:DBName.self,forPrimaryKey:id)

我知道有一个公认的答案,但接下来,请小心命名,因为这可能会导致混淆。使用此代码
realm.objects(DBName.self)
DBName不是数据库名称,而是对象名称。像人或狗一样。所以这将是更清晰的代码
realm.objects(PersonObject.self)
@renanlopes只是一个小问题
。首先
是危险的,因为它显式地展开一个可选项,该可选项可能为零,这可能会导致代码崩溃。理解您提到的“如果您确定”
guard让firstResult=realm.objects(DBName.self).filter(“ID==%@”,ID)。first{
将是一个更安全的选项。