我正在将数据从 CSV 文件导入到本地 Realm 数据库中。我的领域模型中的属性之一是一个定义为可选的字符串(字符串?)。
当我遇到带有空值(即,,,)的 CSV 字段时,将其导入 Realm 后,它在 Realm Studio 中显示为 null。不是“空”字符串。但是,在 Swift 中,当我检索此属性时,它返回“null”作为字符串而不是 nil。该属性在我的 Swift 类中是可选的。
@objc dynamic var name: String? = nil
有没有办法处理空的 CSV 值,以便将它们作为 Swift 中的实际 nil 值导入到 Realm 中?我想确保可选的 String 属性在我的 Swift 代码中正确表示为 nil?
Realm Studio 将 nil 值显示为“null”,其中属性包含 nil,就像在没有值的可选中一样。
这是一个例子。创建一个具有两个属性的测试模式,一个非可选属性和一个可选属性
class Test: Object {
@Persisted var name = ""
@Persisted var myOptional: String?
}
然后是一些代码来测试导入的内容
let results = realm.objects(Test.self)
for r in results {
print( type(of: r.myOptional) )
if r.myOptional == nil {
print("myOptional was nil")
} else {
print("myOptional was not nil")
}
}
上面的代码读取所有导入的值,获取类型对象
myOptional
并将其打印到控制台,然后确定它是否为nil。
这是包含两个要导入的对象(名为 Test.csv)的平面文件。并不是说 Jay 对象的可选属性是“某个字符串”,而 Cindy 的可选属性是空
name,myOptional
Jay,some string
Cindy,
然后在 Realm Studio 中导入如下所示的平面文件
运行代码,这是控制台输出
The myOptional property was of type: Optional<String>
myOptional was not nil
The myOptional property was of type: Optional<String>
myOptional was nil