Проблема - то, что файл не копируется в Ваш комплект приложений. Зафиксировать его:
Проверьте дважды Options
в add files
меню при добавлении файла. Цель в Add to targets
должна быть отмечена для добавления его к пакету:
В случае, если Вы находитесь на самом деле в другом пакете (тест, например), используйте:
guard let fileURL = Bundle(for: type(of: self)).url(forResource: fileName withExtension:"txt") else {
fatalError("File not found")
}
Нажмите на свой файл на Вашей панели навигации и откройте Right Panel / Инспектор свойств.
Вывод Swift 3.0
let fileNmae = "demo"
let path = Bundle.main.path(forResource: fileNmae, ofType: "txt")
do {
let content = try String(contentsOfFile:path!, encoding: String.Encoding.utf8)
print(content)
} catch {
print("nil")
}
SWift 2.0
do{
if let path = NSBundle.mainBundle().pathForResource("YOURTXTFILENAME", ofType: "txt"){
let data = try String(contentsOfFile:path, encoding: NSUTF8StringEncoding)
let myStrings = data.componentsSeparatedByCharactersInSet(NSCharacterSet.newlineCharacterSet())
print(myStrings)
}
} catch let err as NSError {
//do sth with Error
print(err)
}
:
Hello Hems
Good Morning
I m here for you dude.
Happy Coding.
А-ч, так же просто имел дело с той же самой проблемой как OP.
проблема состоит в том, что решения, учитывая здесь и здесь не работают, когда код выполняется в детской площадке, начиная с Options
, меню add files
выглядит по-другому для него, не показывает Add to targets
поле:
, Когда в .playground
файл, вместо этого нажмите Hide or show the Navigator
кнопка на верхнем правом из Вашего окна Xcode (визуальное впечатление)->
Затем после того как Навигатор сворачивается открытый на левой стороне окна Xcode, просто перетащите & отбросьте свой файл к Resources
каталог Вашей детской площадки.
, Если Ваша установка смотрит что-нибудь как следующий, что необходимо быть в порядке:
Я добавил file.txt
к своему проекту, и он был автоматически добавлен к Copy Bundle Files
из моего проекта. Для меня я должен был удалить расширение из forResource
, и оно работало.
let path = Bundle.main.path(forResource: "file", ofType: "txt") // not forResource: "file.txt"
Та же проблема, немного отличающаяся ситуация & решение. Я следую учебному руководству, в котором было сказано для использования следующего кода:
// Start the background music:
if let musicPath = Bundle.main.path(forResource:
"Sound/BackgroundMusic.m4a", ofType: nil) {
print("SHOULD HEAR MUSIC NOW")
let url = URL(fileURLWithPath: musicPath)
do {
musicPlayer = try AVAudioPlayer(contentsOf: url)
musicPlayer.numberOfLoops = -1
musicPlayer.prepareToPlay()
musicPlayer.play()
}
catch { print("Couldn't load music file") }
}
}
у меня была та же проблема как другие, но ни одно из решений не устранило проблему. После экспериментирования все, что я сделал, было, удаляют Звук от пути в следующем вызове, и все работало:
Bundle.main.path(forResource: "BackgroundMusic.m4a", ofType: nil)
казалось бы, что учебное руководство было по ошибке, говоря мне включать Звук в пути.
Я думаю, что Вы не хотите inDirectory:
метод. Попробуйте это вместо этого:
if let filepath = Bundle.main.path(forResource: "newTest", ofType: "txt") {
Это было полезно для меня: XCode - копирует структуру папок в мой комплект приложений
, Mark "создает ссылочную опцию" папки, когда Вы создаете активы во вложенных папках.
Затем находят путь к файлу как это:
let path = Bundle(for: type(of : self)).path(forResource: "some_folder_a/some_folder_b/response.json", ofType: nil)