plistまたはdataを書き込むための一意の名前付き出力ファイルを開きたいが、init(fileURLWithPath :)またはinitのURLルーチン(文字列は:)FileHandleが書き込みアクセスのためにURLを受け入れない
func NewFileHandleForWritingFile(path: String, name: String, type: String, outFile: inout String?) -> FileHandle? {
let fm = FileManager.default
var file: String? = nil
var uniqueNum = 0
while true {
let tag = (uniqueNum > 0 ? String(format: "-%d", uniqueNum) : "")
let unique = String(format: "%@%@.%@", name, tag, type)
file = String(format: "%@/%@", path, unique)
if false == fm.fileExists(atPath: file!) { break }
// Try another tag.
uniqueNum += 1;
}
outFile = file!
do {
let fileURL = URL.init(fileURLWithPath: file!)
let fileHandle = try FileHandle.init(forWritingTo: fileURL)
print("\(file!) was opened for writing")
//set the file extension hidden attribute to YES
try fm.setAttributes([FileAttributeKey.extensionHidden: true], ofItemAtPath: file!)
return fileHandle
} catch let error {
NSApp.presentError(error)
return nil;
}
}
デバッガは
(ファイルを示しています。//)が、他のようにそれ以外の場合は同じ、と私はたいjuのときにreutrning(-1)を投げる新しいメソッドを好むパスを使用しています。スローされたエラー(2)はENOENT(そのようなエンティティはありません。)です。への書き込みへの書き込み他にどのように取得するのか混乱していますか?サンプルパスは、デスクトップでトリアージを作成するために作成された新しいフォルダです。
まあ、私は、書き込みデータやplistの対フェンスの上に残っていたが、私はこれを念頭に置いておきます、ありがとう! – slashlos
私は、書き込みのためのURLを返すバリアント関数を作成しました。私は提案されたデータ書き込みメソッドを使用できます: 'try data.write(to:fileURL)' – slashlos