gpt4 book ai didi

swift - swift 中托管对象变量条件赋值的快捷方式

转载 作者:行者123 更新时间:2023-11-30 10:12:05 25 4
gpt4 key购买 nike

我正在尝试从字典更新核心数据对象。字典可能不包含该值,因此我需要根据字典存在的条件来分配该值。下面的代码可以工作,但似乎太长了。有没有办法让条件赋值更加紧凑?

@NSManaged var title: String
...
func updateFromDict(dict :[String :String]){
if dict["title"] != nil {
self.title = dict["title"]!
}
}

最佳答案

Swift-y 方式不是检查 nil,而是使用可选绑定(bind):

if let title = dict["title"] {
self.title = title
}

这实际上并没有更短。

您不能将赋值设为可选,但您可以使用nil合并运算符 ?? 来解开值并仅赋值self.title<如果 dict["title"]nil 为自身:

self.title = dict["title"] ?? self.title
<小时/>

如果您想变得更奇特,您可以定义自己的运算符=?,如果右侧不nil,则执行赋值操作:

infix operator =? {}

func =?<T> (inout lhs: T, rhs: T?) {
if let value = rhs {
lhs = value
}
}

用法:

self.title =? dict["title"]

关于swift - swift 中托管对象变量条件赋值的快捷方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32413436/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com