给定捆绑包中文件的名称,我希望将该文件加载到我的 Swift 应用程序中。所以我需要用这个方法:
let soundURL = NSBundle.mainBundle().URLForResource(fname, withExtension: ext)
由于某种原因,该方法需要与文件扩展名分开的文件名。好吧,在大多数语言中把两者分开很容易。但到目前为止,我觉得斯威夫特并不是这样。
这就是我所知道的:
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'
如果没有强制转换,我将在后面的两行中得到一个错误。
有人能帮我分割这个文件名和扩展名吗?