繁体   English   中英

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)]
       }
    }

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

直接转换为Swift:

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

尼斯·斯威夫特:

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
    }
}

您不能将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类型和对象:Array代替NSArray,Dictionary代替NSDictionary,等等。

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

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

注意:我想您正在尝试从Objective-C改编代码,因为您的示例到处都有[]

将您的字符串项放在"\\\\()"

例如:

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

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

暂无
暂无

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

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