स्विफ्ट 3, पर Karim’s answer आधारित।
let fileURL = Bundle.main.url(forResource:"filename", withExtension: "txt")
लेखन हालांकि, अगर आप वहाँ नहीं लिख सकते हैं:
पढ़ना
आप फ़ाइलों को पढ़ सकता बंडल के संसाधन के माध्यम से किसी ऐप के बंडल में शामिल। तुम्हें पता है, एक प्रति बनाने की आवश्यकता होगी अधिमानतः दस्तावेज़ निर्देशिका में:
func makeWritableCopy(named destFileName: String, ofResourceFile originalFileName: String) throws -> URL {
// Get Documents directory in app bundle
guard let documentsDirectory = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).last else {
fatalError("No document directory found in application bundle.")
}
// Get URL for dest file (in Documents directory)
let writableFileURL = documentsDirectory.appendingPathComponent(destFileName)
// If dest file doesn’t exist yet
if (try? writableFileURL.checkResourceIsReachable()) == nil {
// Get original (unwritable) file’s URL
guard let originalFileURL = Bundle.main.url(forResource: originalFileName, withExtension: nil) else {
fatalError("Cannot find original file “\(originalFileName)” in application bundle’s resources.")
}
// Get original file’s contents
let originalContents = try Data(contentsOf: originalFileURL)
// Write original file’s contents to dest file
try originalContents.write(to: writableFileURL, options: .atomic)
print("Made a writable copy of file “\(originalFileName)” in “\(documentsDirectory)\\\(destFileName)”.")
} else { // Dest file already exists
// Print dest file contents
let contents = try String(contentsOf: writableFileURL, encoding: String.Encoding.utf8)
print("File “\(destFileName)” already exists in “\(documentsDirectory)”.\nContents:\n\(contents)")
}
// Return dest file URL
return writableFileURL
}
उदाहरण उपयोग:
let stuffFileURL = try makeWritableCopy(named: "Stuff.txt", ofResourceFile: "Stuff.txt")
try "New contents".write(to: stuffFileURL, atomically: true, encoding: String.Encoding.utf8)
स्रोत
2016-11-27 13:56:59
"मैंने पढ़ा है और इसे से लिखने में सक्षम होना चाहता हूँ।" आप नहीं कर सकते। किसी डिवाइस पर इंस्टॉल होने पर, ऐप बंडल ** केवल पढ़ने के लिए ** है। आप अपने ऐप बंडल में एक फाइल पढ़ सकते हैं लेकिन आप इसे लिख नहीं सकते हैं। –