Swift3:如何在 NSArray 中使用用户默认数据?

Swift3: How to use user default data in NSArray?

我创建了一个名为 "data" 的用户默认值 属性,它包含 String 的值,这意味着它是一个字符串数组。我想在 "data" 中使用字符串作为 searchString 写在下面 ("one", "two", "three")。我创建了一个方法;

func getInput() -> [String] {
    if let myData = userDefaults.array(forKey: "data") as? [String] {
        return myData
    }
    return []
}

我把代码放在 NSArray.init() 里面,看起来像里面 NSArray.init(getInput)。但是,报错出来了,说是不是NSArray之类的,所以我觉得是问题所在。

func textViewDidChange(_ textView: UITextView) {
    let attrStr = NSMutableAttributedString(string: mytextView.text)
    let inputLength = attrStr.string.characters.count
    let searchString : NSArray = NSArray.init("one", "two", "three")
    for i in 0...searchString.count-1 {
        let string : String = searchString.object(at: i) as! String
        let searchLength = string.characters.count
        var range = NSRange(location: 0, length: attrStr.length)
        while (range.location != NSNotFound) {
            range = (attrStr.string as NSString).range(of: string, options: [], range: range)
            if (range.location != NSNotFound) {
                range = NSRange(location: range.location + range.length, length: inputLength - (range.location + range.length))
                mytextView.attributedText = attrStr
            }
        }
    }

此外,如果有更好的方法来保存用户数据而不是用户默认值,你能告诉我原因并提供示例吗?但我的主要问题是如何访问用户默认保存的数据并将数据放入NSArray.init("*here*")

在Swift中,如果你使用Swift原生的ArrayDictionary而不是NSArrayNSDictionary,那就更好了,但是回答您的问题,您可以使用初始化程序 NSArray(array:)NSArray 初始化为 Swift 类型的数组。

let searchString : NSArray = NSArray.init(array: getInput())

let searchString : NSArray = NSArray(array: getInput())