Maison  >  Questions et réponses  >  le corps du texte

ios - swift新手请教,我在swift中调用self.init,报错了,怎么回事?

在方法中药调用 self = self.init,报错信息是:Cannot assign to value:'self'is immutable
代码如下:

class Node:NSObject{


var parentID:Int?//父节点的id,如果为-1表示该节点为根节点

var nodeID:Int?//本节点的id

var name:NSString?//本节点的名称

var depth:Int?//本节点的深度

var expand:Bool?//该节点是否处于展开状态

//快速实例化该对象模型

func initWithParentID(parentID:Int,nodeID:Int,name:NSString,depth:Int,expand:Bool) -> Self{
    
    self = self.init
    
    return self
    
}

}

伊谢尔伦伊谢尔伦2765 Il y a quelques jours508

répondre à tous(2)je répondrai

  • 高洛峰

    高洛峰2017-04-18 09:49:55

    Le message d'erreur n'est-il pas très clair ? Self ne peut pas être modifié - -
    Appelez d'abord la fonction d'initialisation de la classe parent

      init(parentID: Int, nodeID: Int, name: NSString, depth: Int, expand:Bool) {
        super.init()
        self.parentID = parentID
        self.nodeID = nodeID
        self.name = name
        self.depth = depth
        self.expand = expand
      }

    répondre
    0
  • ringa_lee

    ringa_lee2017-04-18 09:49:55

    Raison fondamentale :
    La chaîne d'initialisation de Swift est différente de celle d'OC. OC hérite uniformément de NSObject, donc super.init dans OC est la classe parent d'initialisation.
    Mais Swift s'initialise d'abord, puis remonte la chaîne d'héritage pour initialiser les propriétés héritées de la classe parent. Après avoir atteint la classe de base, il termine ensuite l'opération d'initialisation vers le bas.

    répondre
    0
  • Annulerrépondre