我有一对课程:listView.setCellFactory(lv -> new EditingListCell<>(
Person::getName,
(text, person) -> {
person.setName(text);
return person ;
})
);
和Scale
。 WeightSet
包含一个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
答案 0 :(得分:1)
您无法将自定义对象保存到属性列表中。属性列表只能包含一个简短的类型列表(字典,数组,字符串,数字(整数和浮点数),日期,二进制数据和布尔值)。
看起来您正在将一系列字典保存到属性列表中,而不是尝试直接保存自定义类,这很好。
您应该创建一对将自定义类转换为属性列表对象的方法。
让我们使用您的Scale对象作为示例。
假设你创建了一个toDict方法,它将Scale对象转换为字典(如果需要,包含其他字典和数组)和init(字典dict:Dictionary),它从字典中创建一个新的Scale对象。
您可以使用map语句将Scale对象数组转换为字典数组,或将字典数组转换为Scale对象数组。