웃거나 울지 마세요-20 년 만에 코딩으로 돌아 왔습니다 …
저는 4 시간 이상을 참조를 살펴보고 Bundle.main.path를 사용하여 텍스트 파일을 열 수 있도록 코드 스 니펫을 시도했습니다. 그래서 내 앱의 데이터를 읽을 수 있습니다 (다음 단계는 적절하게 구문 분석하는 것입니다).
if let filepath = Bundle.main.path(forResource: "newTest", ofType: "txt")
{
do
{
let contents = try String(contentsOfFile: filepath)
print(contents)
}
catch
{
print("Contents could not be loaded.")
}
}
else
{
print("newTest.txt not found.")
}
결과 : “newTest.txt를 찾을 수 없습니다.” 파일을 프로젝트로 끌어서 놓는 방법에 관계없이 Xcode 내에 파일을 만들거나 파일-> 파일 추가 … 메뉴 항목을 사용합니다.
답변
문제는 파일이 App Bundle로 복사되지 않는다는 것입니다. 그것을 해결하기 위해:
- 프로젝트를 클릭하십시오
- 타겟을 클릭하세요
- 빌드 단계 선택
- 번들 리소스 복사 확장
- ‘+’를 클릭하고 파일을 선택하십시오.
답변
파일을 추가 할 때 메뉴 Options
에서 다시 확인 add files
하십시오. Add to targets
번들에 추가하려면 대상을 선택해야합니다.
실제로 다른 번들에있는 경우 (예 : 테스트) 다음을 사용하십시오.
guard let fileURL = Bundle(for: type(of: self)).url(forResource: fileName withExtension:"txt") else {
fatalError("File not found")
}
답변
답변
스위프트 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 창의 왼쪽에 Navigator가 열리면 파일을 Resources
플레이 그라운드 의 디렉토리로 드래그 앤 드롭하면 됩니다.
설정이 다음과 같으면 정상입니다.
답변
동일한 문제, 약간 다른 상황 및 솔루션. 다음 코드를 사용하라는 자습서를 따르고 있습니다.
// 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") }
}
}
나는 다른 사람들과 같은 문제가 있었지만 어떤 해결책도 문제를 해결하지 못했습니다. 실험 후, 내가 한 것은 다음 호출에서 경로에서 Sound 를 제거하는 것이었고 모든 것이 작동했습니다.
Bundle.main.path(forResource: "BackgroundMusic.m4a", ofType: nil)
경로에 Sound 를 포함하라고 지시하여 튜토리얼에 오류가있는 것 같습니다 .
답변
file.txt
내 프로젝트에 추가했는데 내 프로젝트에 자동으로 추가되었습니다 Copy Bundle Files
. 나를 위해 확장 프로그램을 제거 forResource
해야했는데 제대로 작동했습니다.
let path = Bundle.main.path(forResource: "file", ofType: "txt") // not forResource: "file.txt"