私はデータのセットを格納するためのタプル配列を持っているswift 3.0のプロジェクトに取り組んでいます。私がそれらを保存したら、このタプル配列をNSArrayに変換し、別の関数を使って配列内の要素(オブジェクト)をシャッフルします。私の要件は、この再構成された配列(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の個々の要素にアクセスできますか?
を与える必要があります。 – KKRocks
私のコードの下を見ることができれば、結果を貼り付けた後、一度配列をシャッフルします。私の必要条件は、これらの要素のそれぞれにアクセスし、私が下で述べたようにプロパティに割り当てることです。 – danu
なぜここでNSArrayを使用していますか?あなたはタイプ情報を捨てている。あなたのシャッフル関数は、 'MutableCollection'の拡張子の中に置かれるほうがいいでしょう。[Swiftで配列をシャッフルするにはどうすればいいですか?](https://stackoverflow.com/q/24026510/2976878)と比較してください。また、配列内のタプルではなく、実際の 'struct'を使用したいと思うでしょう。タプルは実際には短期間のデータストレージに使用されることを意味します。 – Hamish