После переключения моего приложения на iOS9 я начал получать ошибки, что файлы, которые я писал, были недоступны для чтения. Вот как я создаю файлыiOS9 FileManager Изменение прав доступа к файлам
let fileManager = NSFileManager.defaultManager()
let directory = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true)[0]
let path = "\(directory)/file.txt"
let attributes: [String:AnyObject] = [NSFilePosixPermissions: NSNumber(short: 666)]
let success = fileManager.createFileAtPath(path, contents: nil, attributes: attributes)
if success && fileManager.isWritableFileAtPath(path) && fileManager.isReadableFileAtPath(path) {
NSLog("Worked!")
} else {
NSLog("Failed!")
}
Когда я это делаю, я все время вижу, что не удалось !.
Разве это не совсем так? Я подозреваю, что разрешения должны быть '0666', а не' 666'. Октал сильно отличается от десятичного. – jtbandes
Я попытался представить его как восьмеричную строку. Не работает. В документах говорится, что соответствующее значение NSFilePosixPermissions является объектом NSNumber. Здесь: https://developer.apple.com/library/mac/documentation/Cocoa/Reference/Foundation/Classes/NSFileManager_Class/#//apple_ref/doc/constant_group/File_Attribute_Keys – Moemars
Конечно, это должен быть номер NSNumber, но Представление «666» - восьмеричное. Вам нужно использовать '0o666' в Swift. См. Https://developer.apple.com/library/ios/documentation/Swift/Conceptual/Swift_Programming_Language/LexicalStructure.html#//apple_ref/swift/grammar/octal-literal – jtbandes