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原生的Array
和Dictionary
而不是NSArray
和NSDictionary
,那就更好了,但是回答您的问题,您可以使用初始化程序 NSArray(array:)
将 NSArray
初始化为 Swift 类型的数组。
let searchString : NSArray = NSArray.init(array: getInput())
或
let searchString : NSArray = NSArray(array: getInput())
我创建了一个名为 "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原生的Array
和Dictionary
而不是NSArray
和NSDictionary
,那就更好了,但是回答您的问题,您可以使用初始化程序 NSArray(array:)
将 NSArray
初始化为 Swift 类型的数组。
let searchString : NSArray = NSArray.init(array: getInput())
或
let searchString : NSArray = NSArray(array: getInput())