将嵌套类写入plist

时间:2016-03-12 22:24:01

标签: ios swift plist

我有一对课程:listView.setCellFactory(lv -> new EditingListCell<>( Person::getName, (text, person) -> { person.setName(text); return person ; }) ); ScaleWeightSet包含一个Scale数组:

WeightSet
class Scale {
    var name: String
    var factor: Double
    var weights: [WeightSet] = []

    ...

 }

有一组class WeightSet { var gauge: String var initial: Double var increment: Double var lengthUnit: String var weightUnit: String ... }

Scale

我已经能够在Xcode中创建一个plist,将其复制到文档目录并读取它,但无法弄清楚如何将其写回plist并进行更改。我能找到的所有例子都是针对简单的类,我不知道如何处理var scales = [Scale]() 的嵌套数组。

仅供参考,以下是我的阅读方式:

WeightSet

1 个答案:

答案 0 :(得分:1)

您无法将自定义对象保存到属性列表中。属性列表只能包含一个简短的类型列表(字典,数组,字符串,数字(整数和浮点数),日期,二进制数据和布尔值)。

看起来您正在将一系列字典保存到属性列表中,而不是尝试直接保存自定义类,这很好。

您应该创建一对将自定义类转换为属性列表对象的方法。

让我们使用您的Scale对象作为示例。

假设你创建了一个toDict方法,它将Scale对象转换为字典(如果需要,包含其他字典和数组)和init(字典dict:Dictionary),它从字典中创建一个新的Scale对象。

您可以使用map语句将Scale对象数组转换为字典数组,或将字典数组转换为Scale对象数组。