我有一个NSTextField,它包含用户Mac的硬件ID。
我还拥有一个登录按钮,如果NSTextField的NSViewController与从URL中提取的字符串匹配,该按钮应该会转到另一个.stringValue中。
下面是我想要描绘的代码。
if let url = URL(string: "URL HERE")
{
do
{
let contents = try String(contentsOf: url)
print(contents)
if contents.contains(serialTextField.stringValue)
{
print("exists")
//SEGUE
}打印时的内容类似于(例如,3个单独的mac硬件ids );
1j2k9j5g8j7b
4n5k5s9db31d
p9d4v8s2z81d我遇到的问题是,如果我只是在NSTextField中输入(例如)数字"1“,那么当我按下登录按钮时,它就表示它存在,它不应该只匹配一个匹配的硬件id。
如何将正确的硬件id与内容匹配,而不匹配单个数字或字母或错误的硬件标识。
当在内容中搜索4n5k5s9db31d时,我如何说有匹配。
任何帮助都是非常感谢的,谢谢。
发布于 2018-10-27 20:23:08
我做了下面的工作,把内容分解成一行。
if let url = URL(string: "URL HERE")
{
do
{
let contents = try String(contentsOf: url)
let components = contents.components(separatedBy: CharacterSet.newlines)
for component in components
{
print(component)
if component == serialTextField.stringValue
{
print("found")
}
}发布于 2018-10-27 20:19:55
我认为这里的问题是,较大的“contents”字符串将检查它是否包含较小的serialTextField.stringValue,这不是您想要的。您希望检查两个硬件ID是否相同。
也许您可以尝试将“内容”拆分为三个不同的字符串,这样您就有了如下所示的字符串数组:
let contentsArray = ["1j2k9j5g8j7b","4n5k5s9db31d","p9d4v8s2z81d"]现在您就可以像这样使用contains了:
if contentsArray.contains(serialTextField.stringValue) {
print("exists")
//segue
}下面是Xcode文档中关于在字符串数组中使用Xcode()方法的示例:
let cast = ["Vivien", "Marlon", "Kim", "Karl"]
print(cast.contains("Marlon"))
// Prints "true"
print(cast.contains("James"))
// Prints "false"https://stackoverflow.com/questions/53025790
复制相似问题