NSRange永远不会是零,比较不允许Swift

时间:2016-03-07 18:06:34

标签: ios swift

我想检查文件是否包含“text”字样,但是我遇到了此错误:image of an error

有没有办法解决这个问题? 感谢

 var data = try NSString(contentsOfFile: documentsDirectoryPath as String,
        encoding: NSASCIIStringEncoding)
        print(data)
if data.rangeOfString("text") != nil {

            print("this is text")
        }
        else{
            print("this is an error")
        }

2 个答案:

答案 0 :(得分:4)

在Swift标准库(rangeOfString)和Foundation(String)中声明了

NSString

但他们是不同的:

  • 如果无法找到索引,NSString版本将始终返回NSRangelocation的非可选NSNotFound结构。

    let data : NSString = "sourcetext"        
    if data.rangeOfString("text").location != NSNotFound {...}
    
  • String版本会返回可选的Range<Index>,如果无法找到索引,则会nil

    let data : String = "sourcetext"        
    if data.rangeOfString("text") != nil {...}
    

在您的情况下,您可以通过将NSString实例强制转换为String来使用Swift版本。

    let data = try NSString(contentsOfFile...  ) as String
    if data.rangeOfString("text") != nil {...}

答案 1 :(得分:2)

您想使用以下代码检查是否找到了字符串:

r
当找不到值时,

if data.rangeOfString("text").location != NSNotFound { } (尚未)返回rangeOfString。而是返回nil