【发布时间】:2017-01-30 22:47:07
【问题描述】:
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)
//从领域中获取创建的对象列表
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条命令和之后的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 :
//OK 上面三个命令都不好
//让我们尝试另一种方式
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。这发生在所有模拟器中。 我知道这可能是我的错,所以如果你能帮我解决这个问题,我会很高兴!
【问题讨论】: