gpt4 book ai didi

arrays - Swift 库中的数组问题 - Realm 2.4.1

转载 作者:行者123 更新时间:2023-11-30 12:43:31 25 4
gpt4 key购买 nike

我的 Realm 数据库遇到了一个奇怪的问题。

是否无法从 Realm 数据数组中的对象中提取数据?

当你制作简单的对象时,就像这样:

import Foundation
import RealmSwift

class Dog: Object {
var index = 0
var day = ""

}

之后,您将创建当前类型的对象列表:

    var dog1 = Dog()
var dog2 = Dog()
var dog3 = Dog()

dog1.day = "one day"
dog1.index = 0

dog2.day = "two day"
dog2.index = 1

dog3.day = "three day"
dog3.index = 2


try! realm.write {
realm.add(dog1)
realm.add(dog2)
realm.add(dog3)
}

然后,您将获得这些对象的列表,但从 Realm 中,您无法从这些对象中获取数据。

让我们看看...

    var dogs = realm.objects(Dog.self)

//获取realm中创建的对象列表

    print("All Dogs",dogs)

//输出:

    All Dogs Results<Dog> (
[0] Dog {
index = 0;
day = one day;
},
[1] Dog {
index = 1;
day = two day;
},
[2] Dog {
index = 2;
day = three day;
})

//一切正常//接下来的3个命令和之后的三个输出

    print("Dog 1",dogs[0])


print("Dog 2",dogs[1])


print("Dog 3",dogs[2])

//三个输出//输出1

    Dog 1 Dog {
index = 0;
day = one day;
}

//输出2

    Dog 2 Dog {
index = 1;
day = two day;
}

//输出3

    Dog 3 Dog {
index = 2;
day = three day;
}

//上层一切正常,但现在问题开始了

    print("Dog 1 day : ",dogs[0].day)

//输出

      Dog 1 day : 

//下一步

    print("Dog 2 day : ",dogs[1].day)

//输出:

    Dog 2 day :

//下一步

    print("Dog 3 day : ",dogs[2].day)

//输出

    Dog 3 day :

//上面三个命令都不好

//我们换个方式试试

    print("Dog 1 day : ", realm.objects(Dog.self).first?.day)

//输出

    Dog 1 day :  Optional("")

//这样也没有给我带来什么好处

//查看此问题的最后一种方法:

    let dogss = try! Realm().objects(Dog.self)
for i in 0..<2 {
let dog = dogss[i]
print("Dog : ", dog,"\n\n\n\n")
print("And just dog day : ", dog.day)
// ...
}

//预期输出:

    Dog :  Dog {
index = 0;
day = one day;
}
And just dog day : one day
Dog : Dog {
index = 1;
day = two day;
}

And just dog day : two day

//但是我们有

   Dog :  Dog {
index = 0;
day = one day;
}
And just dog day :
Dog : Dog {
index = 1;
day = two day;
}
And just dog day :

后记:

所以,我使用 Xcode 8.2.1、swift 3。这在所有模拟器中都会发生。我知道这也许是我的错,所以如果您能帮我解决这个问题,我将非常高兴!

最佳答案

内置类型(字符串、整数等)的属性必须使用dynamic修饰符声明,以便 Realm Swift 能够提供从底层 Realm 文件检索值的 getter。如果没有 dynamic 修饰符,Swift 编译器会生成对底层实例变量的访问,该变量不包含从 Realm 文件加载的对象的任何数据。

关于arrays - Swift 库中的数组问题 - Realm 2.4.1,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41946777/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com