Swift   发布时间:2022-04-29  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了properties – “无法赋值给该表达式的结果” – 如何设置可选变量的属性大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个关于 Swift和可选属性的问题.

假设我有以下代码

import Foundation

class MyClass: NSObject {

    var parent: MyClass?
    var String: String?

    init() {
        super.init()

    }

}

let variable : MyClass = MyClass()
variable.String = "variable"
variable.parent?.String = "parent"

我在下面的行中收到错误,说“无法分配给这个表达式的结果”

variable.parent?.String = "parent"

现在,我可以通过用感叹号替换问号来抑制这个错误,据我所知,这使得Swift认为一个对象将在运行时存在,但它会崩溃,因为显然没有一个对象.

基本上,如何在不执行“if variable.parent”之类的操作的情况下在可选变量上设置属性

解决方法

您无法在不存在的父级中分配字符串.你将如何避免这种情况取决于你.有一点可以肯定,要么你要确保父绑定(比如在一些init()方法中绑定它),要么每次都必须使用if variable.parent(即使你不想这样)或者你必须定义一个像assignParentString()这样的方法,用于检查父项.

func assignParentString (String: String) {
  if let parent = self.parent {
    parent.String = String
  }
}

例如:

3> class MyClass {
  4.     var parent : MyClass?
  5.     var name   : String?
  6.     func aps (name:string) {
  7.         if let parent = self.parent {
  8.             parent.name = name
  9.         }   
 10.     }   
 11. }   
 12> var mc = MyClass()
mc: MyClass = {
  parent = nil
  name = nil
}
 13> mc.name = "mc"
 14> mc.aps ("mcp")           // no error,name did not take
 15> mc
$R3: MyClass = {
  parent = nil
  name = "mc"
}
 16> mc.parent = MyClass()
 17> mc.aps ("mcp")
 18> mc
$R6: MyClass = {
  parent = Some {
    parent = nil
    name = "mcp"
  }
  name = "mc"
}

大佬总结

以上是大佬教程为你收集整理的properties – “无法赋值给该表达式的结果” – 如何设置可选变量的属性全部内容,希望文章能够帮你解决properties – “无法赋值给该表达式的结果” – 如何设置可选变量的属性所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。