我正在使用swift 3.0中的一个项目,我有一个用于存储数据集的元组数组。一旦我保存它们,我将这个元组数组转换为NSArray,并使用另一个函数对该数组中的元素(对象)进行洗牌。我的要求是访问这个重新调整的数组(NSArray)中的元素。我的代码如下(请阅读评论以便更好地理解)。
这是我将数据保存到元组数组的地方
var savedSongsArray:[(title:String,healerName:String,trackUrl:URL,imageUrl: String)] = []
func getAllTracksFromSavedPath(){
for i in 0 ..< trackIdsArray.count{
savedSongsArray.append((title: songDetailsArray[i].title , healerName:songDetailsArray[i].healerName, trackUrl: uRL, imageUrl: songDetailsArray[i].imageUrl))
//savedSongsArray is my tuple array
}
let arrayToBeShuffled = savedSongsArray as NSArray // This is where I convert it to a NSArray
}
我的随机播放功能
func shuffledSongsArray(array:NSArray) -> NSArray {
let mutableArray = array.mutableCopy() as! NSMutableArray
let count = mutableArray.count
if count>1 {
for i in ((0 + 1)...count-1).reversed(){
mutableArray.exchangeObject(at: i, withObjectAt: Int(arc4random_uniform(UInt32(i+1))))
}
}
return mutableArray as NSArray
}
一旦我将mutableArray的结果打印为下面的
("indika - (index.jpeg)", "Steven Flemin", file:///Users/auxenta/Library/Developer/CoreSimulator/Devices/2B4EB1F8-FA38-4777-A274-10979F6EEB6F/data/Containers/Data/Application/CAB78797-8AB2-4DD9-8322-6F88B454BA74/Documents/5746821397741568.mp3, "https://storage.googleapis.com/feisty-beacon-159305.appspot.com/images.png")
如何访问此元组NSArray中的各个元素?
答案 0 :(得分:0)
首先,使用本机Swift结构,即Array而不是NSArray和NSMutableArray。
您可以像这样访问命名元组的元素:
let title = array[n].title
,其中n
是您要访问的元组的索引,title是您想要获取的元组的命名元素。
这应该有效:
func shuffledSongsArray(array:[(title:String,healerName:String,trackUrl:URL,imageUrl: String)]) -> [(title:String,healerName:String,trackUrl:URL,imageUrl: String)] {
let shuffledArray: [(title:String,healerName:String,trackUrl:URL,imageUrl: String)] = []
//do the shuffling here
return shuffledArray
}
let result = shuffledSongsArray(array: inputArray)
let firstHealerName = result[0].healerName
或let firstHealerName = result[0].1
应该会给你相同的结果