SWIFT字符串?没有名为 'element' 的成员

SWIFT String? does not have a member named 'element'

我想知道如何从数组中填充我的标签

    func metaDataUpdated(metaData : NSString){
    var listItems: NSArray = [metaData.componentsSeparatedByString(";")]
    if ([listItems.count] > 0){
        println([listItems.objectAtIndex(0)])
       titleSong.text = [listItems.objectAtIndex(0)]
       }
    }

我真的不知道如何将数组转换为字符串。

将您的项目放入 "\()"

例如:

titleSong.text = "\([listItems.objectAtIndex(0)])"

但不确定您是否需要 [] 括号

您不能将 NSArray 分配给 NSString 因此您需要将第一个索引的值转换为字符串

改变这个

        titleSong.text = [listItems.objectAtIndex(0)]

      titleSong.text = "\(listItems.objectAtIndex(0))"

      titleSong.text = listItems[0] as! String 

并将此行更改为 ([listItems.count > 0])(listItems.count > 0)

您的代码将如下所示: 注意这不是 obj-c 所以删除所有 []

func metaDataUpdated(metaData : NSString){
    var listItems: NSArray = metaData.componentsSeparatedByString(";")
    if (listItems.count > 0)
      {
        println(listItems.objectAtIndex(0))
       titleSong.text = listItems.objectAtIndex(0)  as! String
       }
    }

现在更好地使用 Swift 类型和对象:数组而不是 NSArray,字典而不是 NSDictionary 等

func metaDataUpdated(metaData : NSString) {
    var listItems = metaData.componentsSeparatedByString(";")
    if listItems.count > 0 {
        print(listItems[0])
        titleSong.text = listItems[0]
    }
}

这里 componentsSeparatedByString returns 一个字符串数组:[String]。然后我们使用简单的索引下标来检索它的第一个值。

注意:我想您是在尝试改编来自 Objective-C 的代码,因为您的示例到处都是 []...

直接转换为Swift:

func metaDataUpdated(metaData : String) {
    let listItems = metaData.componentsSeparatedByString(";")
    if listItems.count > 0 {
        print(listItems[0])
        titleSong.text = listItems[0]
    }
}

更好Swift:

func metaDataUpdated(metaData : String) {
    let listItems = metaData.componentsSeparatedByString(";")
    if let first = listItems.first {
        print(first)
        titleSong.text = first
    }
}

甚至更好 Swift,无需使用 Foundation,也不需要将每个组件都用“;”分隔的功能,但只有第一个(推荐):

func metaDataUpdated(metaData : String) {
    if let index = metaData.characters.indexOf(";") {
        let first = metaData[metaData.startIndex ..< index]
        print(first)
        titleSong.text = first
    }
}