将简单变量转换为数组(Swift)

时间:2017-10-27 10:42:41

标签: ios arrays swift xcode swift3

我在viewController var category : QCategoryy?中有这个变量 我决定把它变成一个数组,所以我创建了这个:var categories: [QCategoryy?]? = [] 但之后我得到了这样的所有错误

  

“类型的值'[QCategoryy?]'没有成员'名称'”

在这一行self.title = categories?.name和其他类似的行。

为什么我会收到这些错误,我该如何解决?

首先将var转换为数组,一切运行良好。 这是QCategoryy的类

struct QCategoryy {
    var name:String
    var isSelected = false
    init(name:String) {
        self.name = name
    }
}

extension QCategoryy: ExpressibleByStringLiteral {
    init(stringLiteral value: String) {
        self.name = value
    }
    init(unicodeScalarLiteral value: String) {
        self.init(name: value)
    }
    init(extendedGraphemeClusterLiteral value: String) {
        self.init(name: value)
    }
} 

4 个答案:

答案 0 :(得分:1)

此处类别是一个数组。所以做这样的事情

 self.title = categories?[0]?.name

答案 1 :(得分:1)

很简单,您已将该变量转换为数组。所以,首先你必须给出数组的索引来调用特定索引处的object的值。 如下所示

for index in 0..<10 {
    if let category = categories[index] {
         self.title = category.name   
     }
  }
如果categories [0]为nil,

条件绑定将阻止应用程序崩溃。

<强>更新

防止数组索引超出循环范围。您可以使用以下示例。

for category in categories {
    title = category.name
}

答案 2 :(得分:0)

现在是一个数组中的

类别。因此,您必须参考其中您指定的名称的某个对象。

更像是,类别?[索引]?名称

答案 3 :(得分:0)

或者您可以使用forEach:

categories?.forEach{ value in
    self.title = value?.name           
}