将 CSV 数据导入 Realm 会导致“null”字符串,而不是可选字符串的 Swift nil

问题描述 投票:0回答:1

我正在将数据从 CSV 文件导入到本地 Realm 数据库中。我的领域模型中的属性之一是一个定义为可选的字符串(字符串?)。

当我遇到带有空值(即,,,)的 CSV 字段时,将其导入 Realm 后,它在 Realm Studio 中显示为 null。不是“空”字符串。但是,在 Swift 中,当我检索此属性时,它返回“null”作为字符串而不是 nil。该属性在我的 Swift 类中是可选的。

@objc dynamic var name: String? = nil

有没有办法处理空的 CSV 值,以便将它们作为 Swift 中的实际 nil 值导入到 Realm 中?我想确保可选的 String 属性在我的 Swift 代码中正确表示为 nil?

ios swift realm
1个回答
0
投票

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
© www.soinside.com 2019 - 2024. All rights reserved.