如何从Swift字符串集转换为数组

时间:2016-01-05 17:02:43

标签: arrays string swift parse-platform

我正在尝试从Parse中检索的字符串对象创建一个单词数组。检索到的对象如下所示:

img1

然后这行代码给出了这个。

let joinedWords = object["Words"] as! String

img2

如何将joinWords转换为数组?

2 个答案:

答案 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!