[macOS] 초속! 10분 안에 텍스트 편집기를 만듭니다. Swift3편
누구에게 읽고 싶습니까?
이번은 macOS 애플리케이션의 이야기입니다. Document Based Application. 응용 프로그램에서 파일을 만들고 저장하고 파일을 열고 편집합니다. 아무래도 퍼스널 컴퓨터인 것 같은 어플리케이션입니다만, 이것을 Xcode의 Document Based Application의 템플릿으로부터 만들려고 하면, 어쨌든 어쩐지 모르고, 당황한 경험을 한 사람은, 나만이 아닐 것입니다. 거기서, 우선 템플릿으로부터 차분히 움직이는 어플리케이션을 만들어, 최초의 허들을 넘을 수 있도록(듯이) 하려고 하는 내용입니다.
무엇을 만드는가?
간단한 텍스트(일반 텍스트)를 편집하고 저장하는 응용 프로그램입니다.
Xcode를 시작하자. (여기에서 10분간)
macOS의 Cocoa Application을 선택합니다.
Use Storyboard에 체크하지 않고(Storyboard는 사용하지 않음) Create Document-Based Application을 체크합니다. 간단한 텍스트가 목적이므로 Document Extension을 txt로 만듭니다.
Document.xib를 선택합니다.
Text View를 윈도우로 드래그하여 붙여넣습니다. File's Owner(Document 클래스)에 Text View를 연결하여 textView라는 인스턴스 이름을 지정합니다.
// ↓↓↓↓
로부터, // ↑↑↑↑
의 사이의 코드가, 템플릿에 추가한 코드입니다. Document.swift
import Cocoa
class Document: NSDocument {
// ↓↓↓↓
@IBOutlet var textView: NSTextView!
var documentText: String?
// ↑↑↑↑
override init() {
super.init()
}
override class func autosavesInPlace() -> Bool {
return true
}
override var windowNibName: String? {
return "Document"
}
// ↓↓↓↓
override func windowControllerDidLoadNib(_ windowController: NSWindowController) {
super.windowControllerDidLoadNib(windowController)
if let text = documentText {
textView.string = text
}
}
// ↑↑↑↑
override func data(ofType typeName: String) throws -> Data {
// ↓↓↓↓
if let data = textView.string?.data(using: .utf8) {
return data
}
// ↑↑↑↑
throw NSError(domain: NSOSStatusErrorDomain, code: unimpErr, userInfo: nil)
}
override func read(from data: Data, ofType typeName: String) throws {
// ↓↓↓↓
if let text = String(data: data, encoding: .utf8) {
documentText = text
return
}
// ↑↑↑↑
throw NSError(domain: NSOSStatusErrorDomain, code: unimpErr, userInfo: nil)
}
}
이상입니다. 빌드하십시오.
코드의 해설은, 굳이 하지 말아 두려고 합니다. 추가한 코드 1행 1행이 무엇을 의도하고 있는지, 여러분이 읽어내는 것이 좋은 학습이 되는 것은 아닐까요.
다음 번에는 같은 내용을 Storyboard를 사용한 프로젝트로 쓰면 어떻게 될지 검토하고 싶습니다.
Reference
이 문제에 관하여([macOS] 초속! 10분 안에 텍스트 편집기를 만듭니다. Swift3편), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/NagonSoft/items/5967f399a3a5c3fee769텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)