CodableWrapper icon indicating copy to clipboard operation
CodableWrapper copied to clipboard

Optional 类型无默认值问题

Open Andy0570 opened this issue 3 years ago • 1 comments
trafficstars

有些参数存在服务器字段缺失或没有值的问题,我也不需要设置默认值(或者说,没有办法为某些属性设置一个合理的默认值)。 声明 Optional 类型的属性:

@Codec("pic") var imageURL: URL?

会报编译器红色错误:❌ type of expression is ambiguous without more context

要将属性设置成有默认值的非可选类型,或者:

@Codec("pic") var imageURL: URL? = nil

才可以编译通过。

【问题】Optional 类型的语义就是:要么它存在值,不存在值默认就是 nil,在声明时还需要主动赋值 nil 有点多余。

Andy0570 avatar Sep 26 '22 03:09 Andy0570

是有这个问题且我们已经注意到了,但是不太好修复跟另外一个feature冲突。所以目前Optional省略= nil只支持没有key参数的Codec。

// 这么写是可以的
@Codec var imageURL: URL?

// 这么写目前不行
@Codec("pic") var imageURL: URL?

如果未来找到办法的话我们会解决这个用户体验不好的问题,毕竟做这个库的目的是为了提升用户体验。

winddpan avatar Sep 26 '22 08:09 winddpan

resolved in 1.0

winddpan avatar Feb 29 '24 06:02 winddpan