提问人:Zack 提问时间:10/8/2023 更新时间:10/10/2023 访问量:36
将 CSV 数据导入 Realm 会导致 “null” 字符串,而不是可选字符串的 swift nil
Importing CSV Data to Realm Results in "null" String Instead of Swift nil for Optional String
问:
我正在将数据从 CSV 文件导入到本地 Realm 数据库中。我的 Realm 模型中的一个属性是定义为可选的 String (String?)。
当我遇到一个值为空(即,,)的 CSV 字段时,当它导入 Realm 时,它在 Realm Studio 中显示为 null。不是“null”字符串。但是,在 Swift 中,当我检索此属性时,它会返回“null”作为 String 而不是 nil。该属性在我的 Swift 类中是可选的。
@objc dynamic var name: String? = nil
有没有办法处理空的 CSV 值,以便它们在 Swift 中作为实际的 nil 值导入到 Realm 中?我想确保可选的 String 属性在我的 Swift 代码中正确表示为 nil?
答:
1赞
Jay
10/8/2023
#1
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")
}
}
上面的代码读取所有导入的值,获取类型对象 is 并将其打印到控制台,然后确定它是否为 nil。myOptional
下面是包含两个要导入的对象的平面文件,称为 Test.csv。请注意,Jay 对象的可选属性是“some string”,而 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
编辑:
有关在标题和数据字段中处理双引号的问题。下面是一个示例
"name","myOptional"
Jay,some string
Cindy,
"Hello","World"
"Hello",
导入时,结果
评论
0赞
Zack
10/9/2023
我按照您的指南创建示例数据,并意识到当我的 csv 标题行有双引号时,问题就来了,即。“id”,“名称”....我猜一定和 Realm Studio 有关
0赞
Jay
10/10/2023
@Zack Realm Studio 应该处理标题和数据字段中的双引号。查看我的编辑
评论