Ios 从字符串中获取范围

Ios 从字符串中获取范围,ios,swift,range,ios8,nsrange,Ios,Swift,Range,Ios8,Nsrange,我想检查字符串是否只包含数字。我找到了用Objective-C写的答案 NSRange range = [myTextField.text rangeOfCharacterFromSet:[NSCharacterSet letterCharacterSet]]; if(range.location == NSNotFound) { // then it is numeric only } 我试着把它改成斯威夫特 let range: NSRange = username.rangeOf

我想检查字符串是否只包含数字。我找到了用Objective-C写的答案

NSRange range = [myTextField.text rangeOfCharacterFromSet:[NSCharacterSet letterCharacterSet]];
if(range.location == NSNotFound) {
    // then it is numeric only
}
我试着把它改成斯威夫特

let range: NSRange = username.rangeOfCharacterFromSet(NSCharacterSet.letterCharacterSet())
我遇到的第一个错误是在分配类型
NSRange

无法将表达式的类型“Range”转换为类型“NSRange”

因此,我删除了
NSRange
,错误消失了。然后在if语句中

let range = username.rangeOfCharacterFromSet(NSCharacterSet.letterCharacterSet())
if range.location == NSNotFound {

}
我遇到了另一个错误

“范围”没有名为“位置”的成员。

请注意,变量
username
的类型为
String
而不是
NSString
。因此,我猜Swift使用了新的
范围
类型,而不是
NSRange

问题是我不知道如何使用这种新类型来实现这一点。我也没有找到任何关于它的文档

有人能帮我把这个代码转换成Swift吗


谢谢。

这是一个如何使用它的示例:

if let range = username.rangeOfCharacterFromSet(NSCharacterSet.letterCharacterSet()) {
    println("start index: \(range.startIndex), end index: \(range.endIndex)")
}
else {
    println("no data")
}

有没有办法将其与
NSNotFound
进行比较?如果我这样做
让range=username.rangeOfCharacterFromSet(NSCharacterSet.letterCharacterSet())==NSNotFound
我得到这个错误,“Int”不能转换为“range”,else语句(无数据)与“no found”等价。明白了吗。非常感谢。是的,我找到了一个解决方案,我正在使用这项工作来验证字符串,我正在使用代码var isValid=true let name=self.TrimText(nameText)作为NSString let nameSet=NSCharacterSet(charactersInString:“abcdefghijklmnopqrstuvxyzabefghijklkmnopqrstuvxyz-”)let set=nameSet.inversedset let range=name.rangeOfCharacterFromSet(set)let isInvalidName=range.location!=NSNotFound如果(isInvalidName){isValid=false}^我认为他没有抓住要点,您不需要Swift中的
range.location
(nor
NSNotFound
)。仅上面的
else
子句就意味着没有找到它。