[英]Swift - '[Subject] does not have a member named 'name' '
[英]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.