繁体   English   中英

[Classname]() 和 Classname() 之间有什么区别?

[英]what is difference between [Classname]() and Classname() in swift?

我想知道两者之间的区别

    var arr = ExamCategory() 
             &
    var arrExamCategories = [ExamCategory]()

请问为什么这样声明,应该使用哪个更好?

我的ExamCategory类是这样的。

class ExamCategory: NSObject {

    var CategoryId: Int?
    var CategoryName:String?
    var TotalSection: Int?
    var ImageUrl: String?

    override init() {

    }

    init(dict:[String:Any]) {
        super.init()

        CategoryId = dict["categoryId"] as? Int
        CategoryName = dict["categoryName"] as? String
        TotalSection = dict["totalSection"] as? Int
       ImageUrl = dict[""] as? String
    }
  .....And So On
}

谁能详细描述和区分两者?

两者用途不同,不能相互比较。 当您需要存储多个元素时,您应该使用数组,但如果您需要单个元素,您应该选择单个默认启动器。 这取决于您的需要。 根据它们在 swift 编程中的用法,两者都是最好的。

ExamCategory()是您的类的默认初始值设定项,它在使用 classname 和 round backets () 调用时为您的类调用init() () 并返回您的类的实例。

在您的示例中, ExamCategory()调用类ExamCategory初始化ExamCategory并返回该类的单个实例,该实例已存储在var arr

var arr = ExamCategory() 

尽管...
[ExamCategory]()是一个类型为ExamCategory的数组初始值ExamCategory 它(可以/必须)持有/存储类ExamCategory或其子类的实例。

在您的示例中, [ExamCategory]()是一个包含ExamCategory元素的ExamCategory 您可以在此数组中的var arr上方插入/添加。

var arrExamCategories = [ExamCategory]()
arrExamCategories.append(arr)

这是初始化数组(集合类型)的苹果文档

var arr = ExamCategory() 

这意味着: ExamCategory 类已被初始化,并且该类的引用已存储在 arr 变量中。

var arrExamCategories = [ExamCategory]()

这意味着:您已经初始化了一个包含 ExamCategory 类对象的数组。

ex: arrExamCategories.append(arr) // var arr = ExamCategory()

有关更多详细信息,请参阅苹果的 swift 文档。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM