2016-04-21 18 views
0

次のコードを使用していますが、エラーが発生しています。すぐにテキストファイルの最後にテキストを追加します。

"can not convert value of type NSURL to int32"

この行で

if let fileHandle = NSFileHandle(fileDescriptor: fileurl, closeOnDealloc: &err). 

と、このエラー

"type of expression ambiguous without more context" at this line

if !data.writeToURL(fileurl, options: .DataWritingAtomic, error: &err) 

コード

取得:

let dir:NSURL = NSFileManager.defaultManager().URLsForDirectory(NSSearchPathDirectory.CachesDirectory, inDomains: NSSearchPathDomainMask.UserDomainMask).last as NSURL 
let fileurl = dir.URLByAppendingPathComponent("log.txt") 

let string = "\(NSDate())\n" 
let data = string.dataUsingEncoding(NSUTF8StringEncoding, allowLossyConversion: false)! 

if NSFileManager.defaultManager().fileExistsAtPath(fileurl.path!) { 
    var err:NSError? 
    if let fileHandle = NSFileHandle(fileDescriptor: fileurl, closeOnDealloc: &err) { 
     fileHandle.seekToEndOfFile() 
     fileHandle.writeData(data) 
     fileHandle.closeFile() 
    } 
    else { 
     print("Can't open fileHandle \(err)") 
    } 
} 
else { 
    var err:NSError? 
    if !data.writeToURL(fileurl, options: .DataWritingAtomic, error: &err) { 
     print("Can't write \(err)") 
    } 
} 
+0

私はその投稿を見ましたが、私を助けませんでした。 –

+0

あなたは関連するコードと新しい問題を投稿し、どの問題があるのか​​説明してください。 – rmaddy

+0

最初のエラーは 'NSFileHandle'初期化子を間違って使用しています。あなたはファイル記述子を持っておらず、 'NSURL'を持っています。 'forWritingToURL'初期化子を使用してください。 – rmaddy

答えて

3

あなたのタラを私にはスウィフト1のように見え、それでもスウィフト1は有効ではありません。 Swift 2以降をお使いの場合は、次のように試してみてください:

let dir = NSFileManager.defaultManager().URLsForDirectory(NSSearchPathDirectory.CachesDirectory, inDomains: NSSearchPathDomainMask.UserDomainMask).last! 
let fileurl = dir.URLByAppendingPathComponent("log.txt") 

let string = "\(NSDate())\n" 
let data = string.dataUsingEncoding(NSUTF8StringEncoding, allowLossyConversion: false)! 

if NSFileManager.defaultManager().fileExistsAtPath(fileurl.path!) { 
    do { 
     let fileHandle = try NSFileHandle(forWritingToURL: fileurl) 

     fileHandle.seekToEndOfFile() 
     fileHandle.writeData(data) 
     fileHandle.closeFile() 
    } catch { 
     print("Can't open fileHandle \(error)") 
    } 
} else { 
    do { 
     try data.writeToURL(fileurl, options: .DataWritingAtomic) 
    } catch { 
     print("Can't write \(error)") 
    } 
} 
+0

これはうまくいきました。 –

関連する問題