diff --git a/README.md b/README.md index 85a0441..fe73453 100644 --- a/README.md +++ b/README.md @@ -165,7 +165,7 @@ let data = binFile.readData()! ## Error handling -`touch`/`remove`/`copyTo`/`writeTo`/`mkdir` returns `Result` Object. +`touch`/`remove`/`copyTo`/`writeTo`/`mkdir` returns `Result` as Enum. If operation is success, `Result` has `value` property. If operation is failure,`Result` has `error` property. @@ -188,7 +188,7 @@ Path.documentsDir["subdir"].mkdir() .onSuccess({ (value:Path) in println( value ) }) - .onFailure({ (error:String) in + .onFailure({ (error:NSError) in println( error ) }) ```` diff --git a/SwiftFilePath/Path.swift b/SwiftFilePath/Path.swift index de481fb..7784c1c 100644 --- a/SwiftFilePath/Path.swift +++ b/SwiftFilePath/Path.swift @@ -59,16 +59,16 @@ public class Path { return path_string } - public func remove() -> Result { + public func remove() -> Result { assert(self.exists,"To remove file, file MUST be exists") var error: NSError? let result = fileManager.removeItemAtPath(path_string, error:&error) return result ? Result(success: self) - : Result(failure: "Failed to remove file."); + : Result(failure: error!); } - public func copyTo(toPath:Path) -> Result { + public func copyTo(toPath:Path) -> Result { assert(self.exists,"To copy file, file MUST be exists") var error: NSError? let result = fileManager.copyItemAtPath(path_string, @@ -76,10 +76,10 @@ public class Path { error: &error) return result ? Result(success: self) - : Result(failure: "Failed to copy file."); + : Result(failure: error!) } - public func moveTo(toPath:Path) -> Result { + public func moveTo(toPath:Path) -> Result { assert(self.exists,"To move file, file MUST be exists") var error: NSError? let result = fileManager.moveItemAtPath(path_string, @@ -87,7 +87,7 @@ public class Path { error: &error) return result ? Result(success: self) - : Result(failure: "Failed to move file."); + : Result(failure: error!) } private func loadAttributes() -> NSDictionary? { diff --git a/SwiftFilePath/PathExtensionDir.swift b/SwiftFilePath/PathExtensionDir.swift index 575a036..9ce89f4 100644 --- a/SwiftFilePath/PathExtensionDir.swift +++ b/SwiftFilePath/PathExtensionDir.swift @@ -71,10 +71,7 @@ extension Path: SequenceType { return self.content(path) } - public func mkdir() -> Result { - if( self.exists ){ - return Result(failure: "Already exists.") - } + public func mkdir() -> Result { var error: NSError? let result = fileManager.createDirectoryAtPath(path_string, withIntermediateDirectories:true, @@ -83,7 +80,7 @@ extension Path: SequenceType { ) return result ? Result(success: self) - : Result(failure: "Failed to mkdir.< error:\(error?.localizedDescription) path:\(path_string) >"); + : Result(failure: error!) } diff --git a/SwiftFilePath/PathExtensionFile.swift b/SwiftFilePath/PathExtensionFile.swift index bf71a05..d3d29bc 100644 --- a/SwiftFilePath/PathExtensionFile.swift +++ b/SwiftFilePath/PathExtensionFile.swift @@ -13,14 +13,14 @@ extension Path { return path_string.pathExtension } - public func touch() -> Result { + public func touch() -> Result { assert(!self.isDir,"Can NOT touch to dir") return self.exists ? self.updateModificationDate() : self.createEmptyFile() } - public func updateModificationDate(date: NSDate = NSDate() ) -> Result{ + public func updateModificationDate(date: NSDate = NSDate() ) -> Result{ var error: NSError? let result = fileManager.setAttributes( [NSFileModificationDate :date], @@ -29,17 +29,11 @@ extension Path { ) return result ? Result(success: self) - : Result(failure: "Failed to modify file.< error:\(error?.localizedDescription) path:\(path_string) >"); + : Result(failure: error!) } - private func createEmptyFile() -> Result{ - let result = fileManager.createFileAtPath(path_string, - contents:NSData(), - attributes:nil - ) - return result - ? Result(success: self) - : Result(failure: "Failed to create file:\(path_string)"); + private func createEmptyFile() -> Result{ + return self.writeString("") } // MARK: - read/write String @@ -58,7 +52,7 @@ extension Path { return read } - public func writeString(string:String) -> Result { + public func writeString(string:String) -> Result { assert(!self.isDir,"Can NOT write data from dir") var error: NSError? let result = string.writeToFile(path_string, @@ -67,7 +61,7 @@ extension Path { error: &error) return result ? Result(success: self) - : Result(failure: "Failed to write file.< error:\(error?.localizedDescription) path:\(path_string) >"); + : Result(failure: error!) } // MARK: - read/write NSData @@ -77,12 +71,13 @@ extension Path { return NSData(contentsOfFile: path_string) } - public func writeData(data:NSData) -> Result { + public func writeData(data:NSData) -> Result { assert(!self.isDir,"Can NOT write data from dir") - let result = data.writeToFile(path_string, atomically:true) + var error: NSError? + let result = data.writeToFile(path_string, options:.DataWritingAtomic, error: &error) return result ? Result(success: self) - : Result(failure: "Failed to write file.< path:\(path_string) >"); + : Result(failure: error!) } } diff --git a/SwiftFilePathTests/SwiftFilePathTests.swift b/SwiftFilePathTests/SwiftFilePathTests.swift index a4cbb3c..e760f5b 100644 --- a/SwiftFilePathTests/SwiftFilePathTests.swift +++ b/SwiftFilePathTests/SwiftFilePathTests.swift @@ -122,6 +122,7 @@ class SwiftFilePathTests: XCTestCase { XCTAssertFalse( file.exists ) } + } func testMkdirAndRemove(){ @@ -407,6 +408,7 @@ class SwiftFilePathTests: XCTestCase { XCTAssertEqual(error,"NG!") }) + XCTAssertTrue( result.isFailure ) XCTAssertEqual( result.error!, "NG!" ) XCTAssertTrue( callOnFailure )