gpt4 book ai didi

Swift:如何在类中初始化类的实例

转载 作者:搜寻专家 更新时间:2023-11-01 05:59:35 24 4
gpt4 key购买 nike

我对在类中尝试初始化数组实例时出现的错误感到困惑。下面的评论是 xcode 6 显示的错误。

我创建了一个类。它有 NSMutableArray 的实例。我想初始化数组(因此调用 self.instancename.init())。如果我不这样做,它就会提示。如果我这样做,它会提示。

导入基金会

class testclass:NSObject {

var list_of_things:NSMutableArray;

init (){ // Designated initializer for 'testclass' cannot delegate (swith self.init);
// did you means this to be a convenience initializer?
self.list_of_things.init();
// 'init' can only refer to the initializers of 'self' or 'super'
super.init()
// Initializer cannot both delegate ('self.init') and chain to a superclass
// initializer ('super.init')
}
}

最佳答案

您需要为变量赋值,该变量中没有任何内容可以调用 init on:

init () {
self.list_of_things = NSMutableArray()
super.init()
}

还有一些注意事项:

  1. 行尾不需要分号(我知道这个习惯很难改)
  2. 不需要继承NSObject
  3. 你应该更喜欢使用原生的 swift 数组 (Array) 而不是 NSMutableArray
  4. 类(class)应始终以大写字母开头
  5. 变量名应该使用驼峰式而不是下划线

这将是我对你的测试类的清理版本:

class TestClass {
var listOfThings: [AnyObject]

init () {
self.listOfThings = []
super.init()
}
}

而且实际上,如果您只想初始化为一个空数组,您甚至不需要实现 init 或显式指定类型:

class TestClass {
var listOfThings = []
}

关于Swift:如何在类中初始化类的实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24099846/

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