가장 좋은 방법 같은 것이 수출을 작성하는 것입니다냅니다 : 나를 위해 작동 무엇
는
저장소 URL을 기록하고 그것을 찾기 위해 그것을 사용하는 것입니다 메일 공유 작업을 사용합니다. 내 애플 리케이션 중 하나에서 사용자가 sqlite 파일의 복사본을 전자 메일로 보내 모든 데이터를 내보낼 수 있습니다.
func exportAllDataSqlite() {
let documentsUrl = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first!
var newFilePath: URL!
var mutablePathComponents = [String]()
var sqliteFileCopied = false
do {
let directoryContents = try FileManager.default.contentsOfDirectory(at: documentsUrl, includingPropertiesForKeys: nil, options: FileManager.DirectoryEnumerationOptions())
for f in directoryContents {
let pathComponents = f.pathComponents
if pathComponents.last == "XXXXWhatever your file is called when created by the persisten store.sqliteXXXXX" {
//create a copy of the file with a dated file name
mutablePathComponents = pathComponents
let dateComponents = (Calendar.current as NSCalendar).components([.day, .month, .year], from: Date())
let dateString = "\(dateComponents.day)-\(dateComponents.month)-\(dateComponents.year)"
mutablePathComponents[mutablePathComponents.count-1] = "Events App \(dateString).sqlite"
newFilePath = NSURL.fileURL(withPathComponents: mutablePathComponents)
do {
try FileManager.default.copyItem(at: f, to: newFilePath!)
sqliteFileCopied = true
print("Copied sqlite file")
} catch let error as NSError {
print(error.localizedDescription)
}
}
}
} catch let error as NSError {
print(error.localizedDescription)
}
if sqliteFileCopied == true {
//sharing
let activityItem:URL = newFilePath!
let objectsToShare = [activityItem]
let activityVC = UIActivityViewController(activityItems: objectsToShare, applicationActivities: nil)
activityVC.completionWithItemsHandler = { activity, success, items, error in
do {
try FileManager.default.removeItem(at: newFilePath!)
print("Deleted file: \(newFilePath!)")
} catch let error as NSError {
print(error.localizedDescription)
}
}
let excludeActivities = [UIActivityType.airDrop,
UIActivityType.print,
UIActivityType.assignToContact,
UIActivityType.saveToCameraRoll,
UIActivityType.addToReadingList,
UIActivityType.postToFlickr,
UIActivityType.postToVimeo]
activityVC.excludedActivityTypes = excludeActivities
self.present(activityVC, animated: true, completion: nil)
} else {
print("file not copied so can't be shared")
}
}
가장 초기의 스위프트 중 일부는 훌륭하지만 작동합니다. 전날 내 애플 리케이션의 배포 된 복사본에 문제를 디버그, 그냥 자신에게 전자 메일 및 Mac에서 Sqlite 뷰어로 열어 그것을 사용합니다.
시뮬레이터에서이 작업을 수행하는 것이 가능합니까? 그런 다음 MacOS 파일 시스템에서 직접 파일에 액세스 할 수 있습니다. – Mundi
불행히도 우리는 장치에서 하나 필요합니다. – shallowThought
파일을 Documents 디렉토리에 복사하고 Airdrop을 통해 Mac과 공유하지 않으므로 프로그래밍 방식으로 문제를 해결할 수 있습니까? 너 그렇게 해봤 니? – KrishnaCA