我是编程的新手,我正在Swift中构建一个简单的iOS应用程序,允许用户将项目添加到列表中。我已经准备好添加新项目,在列表中查看它们,订购列表,查看详细视图等。每个项目包括名称[String]和Comment [String]。名称通过UITextField输入,注释通过UITextView输入。
我写了一个词典,将一组键例如“鸡尾酒”与一个值相关联,例如“bar”。键和值都是字符串。
我想检测输入到评论UITextView中的任何字典键,并从字典中返回值。
好奇有些人可能会这样做......
从概念上讲,我认为我需要:
创建一个变量enteredCommentText来存储在commentUITextView中输入的内容
编写一个遍历enteredCommentText的函数来检测字典中的任何键(字符串)
返回检测到的每个密钥的每个密钥的值
将这些值保存为数组,以便我可以随心所欲地使用
奖励:我可以检测用户输入,而不是在事件之后,即DidEndEditing或转到下一个字段或点击保存等?
非常感谢任何代码建议。我一直在玩Apple的一些词典语法:
var keywordDict: [String: String] = [
"cocktail": "bar"
]
//Look up a value, print the key
if let wordValue = keywordDict["cocktail"] {
print("The keyword is \(wordValue).")
//Prints: "The keyword is bar."
}
let enteredCommentText = "Here is a sample of text. It contains a burger."
//Detect text
if enteredCommentText.containsString("burger") {
print("found burger")
//Prints: "found burger"
}
答案 0 :(得分:1)
你在概念上是正确的。下面是一个示例实现,它显示了如何获取给定字符串的匹配值 - 假设您需要contains
而不是我从示例代码中收集的完全匹配。
let dict = ["Hi" : "there"]
let filteredString = "some text"
let matchingValues = dict.filter { $0.0.containsString(filteredString) }.map { $0.1 }
// matchingValues now contains all values of the dictionary where the key matched
如果你不熟悉filter
/ map
语法,这里有一个实现相同的东西并且实际上更快的循环......但更不用说了! ;)
var matchingValues = [String]()
for (key, value) in dict {
if key.containsString(filteredString) {
matchingValues.append(value)
}
}
如果您想在每次击键时获得更新,可以使用以下代码:
class YourViewController {
func textChanged(sender: UITextField) {
// Do your stuff here
}
func viewDidLoad() {
super.viewDidLoad()
// other setup code...
myTextField.addTarget(self, action: #selector(YourViewController.textChanged(_:)), forControlEvents: .EditingChanged)
}
}
请注意,您还可以通过从文本字段拖动到类,并选择“编辑已更改”作为事件类型,通过InterfaceBuilder添加操作。
答案 1 :(得分:0)
您好这是您需要的代码,当用户输入onAuthenticationFailure
中包含的字词时,dictionary
替换value
dict
我希望这有助于你
答案 2 :(得分:0)
我在David的帮助下写下了这个,并按照我的预期打印了这些值!
var myDict [String:String] [ “key1”:“value1”, “key2”:“value2” ]
for myDict中的{key,value} { 如果放置!.comment.rangeOfString(key)!= nil { 打印(值) } }