【发布时间】:2017-05-31 08:39:29
【问题描述】:
我正在 swift 3.0 中开发一个项目,其中我有一个元组数组来存储一组数据。保存它们后,我将此元组数组转换为 NSArray 并使用另一个函数对该数组中的元素(对象)进行混洗。我的要求是访问这个重新调整的数组(NSArray)中的元素。我的代码如下(请阅读 cmets 以获得更好的理解)。
这是我将数据保存到我的元组数组的地方
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 中的各个元素??
【问题讨论】:
-
您能不能解释一下您的要求,因为无法理解您的问题。
-
如果你能看到我的代码底部,我已经粘贴了我洗牌数组后得到的结果。我的要求是访问这些元素中的每一个并分配给我在下面提到的属性
-
你为什么在这里使用
NSArray?您正在丢弃类型信息。您的改组功能最好放在MutableCollection的扩展中,比较How do I shuffle an array in Swift?。此外,您可能希望使用实际的struct而不是数组中的元组。元组仅用于短期数据存储。 -
对不起,我是 swift 新手,可以使用代码 sn-p 更具体