으아아아아악!
나는 영어 사전 어플을 만들기 위해서 영어 사전이라는 DB를 어플리케이션을 동작할 때 넣어줘야했다.
결론적으로는 해결을 했다.
해당 시뮬레이션 기기마다 경로가 달라서 DB파일을 어떻게 넣어줘야하는지 몰랐는데
만들어둔 DB를 시뮬레이터가 돌아갈 때 새로운 DB를 만들어 Copy해주는 방법을 사용해야했다.
어떻게 하는지 알아보자.
먼저 제작한 데이터 베이스를 프로젝트 폴더 안에 넣어주자.
이런 식!
그 후에는
https://github.com/stephencelis/SQLite.swift
여기 프로젝트를 다운받아서 압축을 풀어주자!
그 후
이런 식으로 프로젝트를 추가해준다.
그 후 메인 프로젝트의 설정에 가자.
여기 사진에서는 OwlEnglish 프로젝트 파일이 될 것이다.
위 사진과 같이 Build Phases 에서
Dependencies와 Link Binary With Libraries 에 SQLite iOS 버전의 프레임 워크를 추가해준다.
이렇게 하면 기본 설정은 끝이 난다.
그 후 아래와 같은 메소드를 추가 해준다.
//dbPath
func dbPath() -> String{
let dirPaths = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true)
let docsDir = dirPaths[0] as String
let destPath = (docsDir as NSString).appendingPathComponent("wook.sqlite3")
return destPath
}
이 메소드와
func copyDatabases(){
let fileManager = FileManager.default
if let path = Bundle.main.path(forResource: "OwlDB", ofType: "sqlite3"){
do{
try fileManager.copyItem(atPath: path, toPath: dbPath())
print("성공했다 카피")
print(path)
print(dbPath())
}catch{
print(error)
}
}
}
이 메소드이다.
카피 메소드에서는 복사 할 기존의 DB 에 대해서 설정해주고 위에 dbPath에서 새로 생성 될 DB의 이름을 알아내서 추가해준다.
이렇게 생성하고나서 빌드를 돌리면 아무 것도 일어나지않는다!
바로 함수만 만들었으니까 흐흐흐
viewDidLoad에 카피 함수를 동작시켜보자!!
그럼 아마 시뮬레이션 경로에 들어가서 sqlite3 파일을 열어보면 기존의 DB의 내용들이 복사되었을 것이다.
참고한 블로그당. 나에게 힘이 되었다.
https://kd3302.tistory.com/965
'개발 > 개발' 카테고리의 다른 글
[iOS] - 강한참조 약한 참조(Strong capture and weak capture) (0) | 2020.05.08 |
---|---|
[iOS] - 뷰컨트롤러 간 값 전달/직접전달방식(동기방식) (0) | 2020.01.10 |
[iOS] - Alert 알림창 띄우기 (actionSheet Style) - 2 (0) | 2019.11.19 |
[SwiftUI] - Tutorial Section6 - Apple (0) | 2019.10.24 |
[SwiftUI] - Tutorial Section5 - Apple (0) | 2019.10.20 |