给定捆绑包中文件的名称,我想将该文件加载到我的Swift应用程序中。因此,我需要使用此方法:
let soundURL = NSBundle.mainBundle().URLForResource(fname, withExtension: ext)
出于某种原因,这种方法需要将文件名与文件扩展名分开。好的,在大多数语言中很容易把它们分开。但到目前为止,我在Swift中并没有发现如此简单。
所以这就是我拥有的:
var rt: String.Index = fileName.rangeOfString(".", options:NSStringCompareOptions.BackwardsSearch)
var fname: String = fileName .substringToIndex(rt)
var ext = fileName.substringFromIndex(rt)
如果我不在第一行包含打字,则会在后面两行出现错误。但是加上后,第一行会出现错误。Cannot convert the expression's type '(UnicodeScalarLiteralConvertible, options: NSStringCompareOptions)' to type 'UnicodeScalarLiteralConvertible'
如何将文件名与扩展名分开?有没有一种优雅的方法可以做到这一点?
我对Swift感到非常兴奋,因为它似乎比Objective C更优雅。但现在我发现它也有自己的笨拙之处。
第二次尝试:我决定制作自己的字符串搜索方法:
func rfind(haystack: String, needle: Character) -> Int {
var a = Array(haystack)
for var i = a.count - 1; i >= 0; i-- {
println(a[i])
if a[i] == needle {
println(i)
return i;
}
}
return -1
}
但是现在我在这一行代码var rt: String.Index = rfind(fileName, needle: ".")
上遇到了一个错误:
'Int' is not convertible to 'String.Index'
没有这个 cast,接下来的两行代码会报错。
有人能帮我分离文件名和文件扩展名吗?