我正在尝试从Parse中检索的字符串对象创建一个单词数组。检索到的对象如下所示:
然后这行代码给出了这个。
let joinedWords = object["Words"] as! String
如何将joinWords转换为数组?
答案 0 :(得分:3)
如果您不关心订单,可以在套装上使用flatMap
:
var mySet = Set<String>()
for index in 1...5 {
mySet.insert("testwords\(index)")
}
let myArray = mySet.flatMap { $0 }
print(myArray) // "["testwords5", "testwords3", "testwords4", "testwords2", "testwords1"]"
如果您希望按字母顺序对列表进行排序,则可以将数组设为var
并使用sortInPlace()
var myArray = mySet.flatMap { $0 }
myArray.sortInPlace()
print(myArray) // "["testwords1", "testwords2", "testwords3", "testwords4", "testwords5"]"
如果object["Words"]
为AnyObject
,则必须打开它。
if let joinedWordsSet = object["Words"] as? Set<String> {
var joinedWordsArray = joinedWordsSet.flatMap { $0 }
myArray.sortInPlace()
print(myArray)
}
Swift 3注意:sortInPlace()
已重命名为sort()
。
答案 1 :(得分:1)
非常感谢@JAL在聊天上花了这么多时间来解决这个问题。这就是我们想出的。它是一个小屋,毫无疑问有一个更好的方式!
上传到Parse时将该集保存为数组。
let wordsSet = (wordList?.words?.valueForKey("wordName"))! as! NSSet
let wordsArray = Array(wordsSet)
然后它保存到Parse - 看起来像一个集合,而不是数组或字典。
let parseWordList = PFObject(className: "WordList")
parseWordList.setObject("\(wordsArray)", forKey: "Words")
parseWordList.saveInBackgroundWithBlock { (succeeded, error) -> Void in
if succeeded {
// Do something
} else {
print("Error: \(error) \(error?.userInfo)")
}
}
然后你可以在从Parse下载字符串时删除字符串,然后删除它,并添加一些&#34;&#34;瞧,有一个阵列可以使用,例如添加到CoreData。
var joinedWords = object["Words"] as! String
joinedWords = String(joinedWords.characters.dropFirst())
joinedWords = String(joinedWords.characters.dropLast())
let joinedWordsArray = joinedWords.characters.split() {$0 == ","}.map{ String($0) } // Thanks @JAL!