Учитывая имя файла в комплекте, я хочу загрузить файл в мое приложение 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 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'
Без трансляции я получаю ошибку на двух последующих строках.
Может ли кто-нибудь помочь мне разбить это имя и расширение?