arrays - 如何获取数组/字典的切片并追加

标签 arrays swift dictionary append slice

我有一个从 plist 中提取的 testWords 数组/字典。我想随机打乱它们,取 2 的切片并将其 append 到另一个单词数组中。由于某种原因,我无法将 testWords append 到单词数组中。我还需要一个适用于 iOS8 的 random shuffle、select、append 版本。

var words: [NSArray]

var testWords: [NSArray]!

let fileName = "level\(levelNumber).plist"
let levelPath = "\(NSBundle.mainBundle().resourcePath!)/\(fileName)"
let levelDictionary: NSDictionary? = NSDictionary(contentsOfFile: levelPath)
testWords = levelDictionary!["words"] as! [NSArray]

let shuffledTestWords = GKRandomSource.sharedRandom().arrayByShufflingObjectsInArray(testWords)
         print("testWords after shuffling is \(shuffledTestWords)")

let chosenWords = Array(shuffledTestWords.prefix(2))
words.appendContentsOf(Array(chosenWords)) 

数组在控制台中看起来像这样:

testWords after shuffling is [(
"drinc drink",
drink,
"Which one is right?",
"",
""
), (
"bank banc",
bank,
"Spell this word ending in  ' nk '",
"",
""
), (
"bunk bunc",
bunk,
"Spell this word ending in  ' nk '",
"",
""
)] 

任何关于如何 append 这样一个数组的想法都非常感谢!现在回答了。

最佳答案

FirSTLy 前缀将返回一个 ArraySlice,它不是一个数组。 其次,append 方法向数组添加一个新元素。

因此,在您的情况下,您可以这样做:words.appendContentsOf(Array(chosenWords))appendContentsOfArray() 将从您的 ArraySlice 创建一个数组。

关于arrays - 如何获取数组/字典的切片并追加,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33599527/

相关文章:

c++ - 清除 map 和删除内容的最简洁方法是什么?

javascript - 为什么这个 for 循环只打印一个元素?

java - 打印具有 3D 数组字段的类

c++ - 'double (*bag)[VECT_SIZE]' 是什么函数参数?

iOS WKWebView - 无法添加 socket ,只能操作

python - 将字典转换为字符串python

java - 如何在Java中调用具有数组类型的构造函数

ios - 编码 SpriteKit 游戏

objective-c - 选择 NSArray 的第 n 个值

java - 通过指定键和值类型扩展映射