2016-10-22 2 views
0

Я создал пользовательское свойство по умолчанию, называемое «данные», которое содержит значения String, что означает массив String. И я хочу использовать строки в «данных» как searchString, написанные ниже ("one", "two", "three"). Я создал метод;Swift3: Как использовать данные пользователя по умолчанию в NSArray?

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*")

ответ

0

В Swift это жидкое тесто, если вы используете Swift родной Array и Dictionary вместо NSArray и NSDictionary, но ответить на ваш вопрос, вы можете инициализировать NSArray с массивом Swift с использованием инициализатора NSArray(array:).

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

Или

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

Это так просто решение. благодаря – bagels