Swift使用Realm存储数据时List属性可选性报错问题咨询
解决Realm中List属性的可选类型报错问题
问题原因分析
- 第一个报错“Object property 'remarkTypes' must be marked as optional”:通常是因为你尝试给非可选的
List属性赋值nil,Realm误以为你需要将该属性设为可选,但实际上List本身就支持空状态,不需要额外标记可选。 - 第二个报错“Generic struct 'Persisted' requires that 'List' conform to '_PersistableInsideOptional'”:Realm的
@Persisted属性不支持将List包装在可选类型(?)中,List类型从设计上就不需要被声明为可选。
修正方案
保持remarkTypes为非可选的List类型,Realm会自动为其初始化空列表,无需手动处理。修正后的代码如下:
public class ReportRealm: Object { @Persisted var remarkTypes: List<RemarkTypeRealm> } public class RemarkTypeRealm: Object { @Persisted var code: String? @Persisted var descriptionR: String? }
使用注意事项
- 添加元素:直接调用
remarkTypes.append(yourRemarkType)即可,无需手动初始化List。 - 清空列表:使用
remarkTypes.removeAll()实现空状态,不要给remarkTypes赋值nil。
内容的提问来源于stack exchange,提问作者vijay singh yadav
相关产品推荐
相关产品推荐

