在 Swift 中创建多个数组的数组
Create an Array of multiple Arrays in Swift
我有一个具有某些特性的对象,classes 数组或结构
我想把这些属性放在一个数组中,这样我就可以很容易地访问它们
在 TableDataSource 中(因为部分、索引路径等。)
我试过写这个初始化
var dataStructure = Array<Any>()
var tweet : Tweet?{
didSet{
dataStructure.removeAll()
dataStructure.append(tweet?.media)
dataStructure.append(tweet?.urls )
dataStructure.append(tweet?.hashtags)
dataStructure.append(tweet?.userMentions)
}
}
然后检索它
override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
// #warning Incomplete method implementation.
// Return the number of rows in the section.
let arr = dataStructure[section] as? NSArray
if arr != nil{
println(arr!)
return arr!.count
}else{
return 0
}
}
但是 arr 总是 nil
可能是因为我正在投射到 NSArray?但我无法转换为 "Array"
media 、 urls 、 hastags 和 userMentions 在 "Tweet" class
中初始化
public var media = [MediaItem]()
public var hashtags = [IndexedKeyword]()
public var urls = [IndexedKeyword]()
public var userMentions = [IndexedKeyword]()
所以它们是非常普通的数组
基本上您的代码存在一些问题:
1) didSet
未在初始化期间调用。这导致 dataStructure
数组为空;
2) 您确定需要转换为 NSArray
吗?没有它你也可以计数。
3) 在Tweet
class 中使用计算的属性 来接收所需的数据会好得多。
public class Tweet {
public var media = [MediaItem]()
public var hashtags = [IndexedKeyword]()
public var urls = [IndexedKeyword]()
public var userMentions = [IndexedKeyword]()
public var dataStructure:[Any] {
return [media, hashtags, urls, userMentions]
}
}
我有一个具有某些特性的对象,classes 数组或结构
我想把这些属性放在一个数组中,这样我就可以很容易地访问它们 在 TableDataSource 中(因为部分、索引路径等。)
我试过写这个初始化
var dataStructure = Array<Any>()
var tweet : Tweet?{
didSet{
dataStructure.removeAll()
dataStructure.append(tweet?.media)
dataStructure.append(tweet?.urls )
dataStructure.append(tweet?.hashtags)
dataStructure.append(tweet?.userMentions)
}
}
然后检索它
override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
// #warning Incomplete method implementation.
// Return the number of rows in the section.
let arr = dataStructure[section] as? NSArray
if arr != nil{
println(arr!)
return arr!.count
}else{
return 0
}
}
但是 arr 总是 nil
可能是因为我正在投射到 NSArray?但我无法转换为 "Array"
media 、 urls 、 hastags 和 userMentions 在 "Tweet" class
中初始化public var media = [MediaItem]()
public var hashtags = [IndexedKeyword]()
public var urls = [IndexedKeyword]()
public var userMentions = [IndexedKeyword]()
所以它们是非常普通的数组
基本上您的代码存在一些问题:
1) didSet
未在初始化期间调用。这导致 dataStructure
数组为空;
2) 您确定需要转换为 NSArray
吗?没有它你也可以计数。
3) 在Tweet
class 中使用计算的属性 来接收所需的数据会好得多。
public class Tweet {
public var media = [MediaItem]()
public var hashtags = [IndexedKeyword]()
public var urls = [IndexedKeyword]()
public var userMentions = [IndexedKeyword]()
public var dataStructure:[Any] {
return [media, hashtags, urls, userMentions]
}
}