Error: Int is not convertible to NSRange

Error: Int is not convertible to NSRange

我遇到错误:

int is not convertible to NSRange

var range:NSrange = 0:

   let predicate = NSPredicate(block: { (city: AnyObject!, b: [NSObject : AnyObject]!) -> Bool in
            var range:NSRange = 0;  //convert error happens here on 0
            if city is NSString {
                range = city.rangeOfString(searchBarText, options: NSStringCompareOptions.CaseInsensitiveSearch)
            }

            return range.location != NSNotFound
        })

关于如何解决这个问题有什么想法吗?

你的初始化语句是错误的。 NSRange 是具有 locationrange 值的结构。将其更改为:

var range = NSMakeRange(NSNotFound, 0)

NSRange 是具有成员 locationlengthstruct,而不是 Int

使用初始化器

var range: NSRange = NSRange(location:0, length:0)

或便捷函数

var range: NSRange = NSMakeRange(0, 0)