Development/아이폰
Cocoa NSError 를 swift 에서 다루기
江多林
2023. 1. 11. 19:05
Error Domain=NSCocoaErrorDomain
Code=260
"파일이 존재하지 않기 때문에 ‘xxx’ 파일을 열 수 없습니다."
UserInfo={
NSFilePath=/var/mobile/Containers/Data/Application/xxx,
NSUnderlyingError=0x106ef7da0 {
Error Domain=NSPOSIXErrorDomain
Code=2
"No such file or directory"
}
}
swift 에서 NSError 잡는 깔끔한 방법
do {
try fileManager.moveItem(at: fromURL, to: toURL)
} catch CocoaError.fileNoSuchFile {
print("Error: no such file exists")
} catch CocoaError.fileReadUnsupportedScheme {
print("Error: unsupported scheme (should be 'file://')")
}
NSError 의 코드는 아래와 같이 NS_ERROR_ENUM 으로 정의되어 위와 같이 접근이 가능하다.
NS_ERROR_ENUM(NSCocoaErrorDomain) {
// File system and file I/O related errors, with NSFilePathErrorKey or NSURLErrorKey containing path or URL
NSFileNoSuchFileError = 4, // Attempt to do a file system operation on a non-existent file
NSFileLockingError = 255, // Couldn't get a lock on file
NSFileReadUnknownError = 256, // Read error (reason unknown)
NSFileReadNoPermissionError = 257, // Read error (permission problem)
NSFileReadInvalidFileNameError = 258, // Read error (invalid file name)
NSFileReadCorruptFileError = 259, // Read error (file corrupt, bad format, etc)
NSFileReadNoSuchFileError = 260, // Read error (no such file)
.....
};
NSCocoaErrorDomain 으로부터 Swift 자동생성된 코드
extension CocoaError {
public static var fileNoSuchFile: CocoaError.Code { get }
public static var fileLocking: CocoaError.Code { get }
public static var fileReadUnknown: CocoaError.Code { get }
public static var fileReadNoPermission: CocoaError.Code { get }
public static var fileReadInvalidFileName: CocoaError.Code { get }
public static var fileReadCorruptFile: CocoaError.Code { get }
public static var fileReadNoSuchFile: CocoaError.Code { get }
public static var fileReadInapplicableStringEncoding: CocoaError.Code { get }
public static var fileReadUnsupportedScheme: CocoaError.Code { get }
@available(macOS 10.5, iOS 2.0, *)
public static var fileReadTooLarge: CocoaError.Code { get }
...
}
참조: https://developer.apple.com/documentation/swift/handling-cocoa-errors-in-swift