Какао: Как перечитать содержимое файла после того, как файл был изменен из другого приложения с помощью NSDocument? - PullRequest
0 голосов
/ 06 ноября 2018

У меня есть приложение на основе документа для какао, которое открывает файл .md для отображения содержимого уценки в хорошем формате. Если я изменю файл .md в другом приложении, таком как textedit, я хочу перезагрузить представления в моем приложении.

Вот что я работаю до сих пор:

import Cocoa

class Document: NSDocument {

   var fileContent = "Nothing yet :("

    override init() {    
        // Add your subclass-specific initialization here.
        super.init()
    }

    override class var autosavesInPlace: Bool {
        return false
    }

    override func makeWindowControllers() {
        // Returns the Storyboard that contains your Document window.
        let storyboard = NSStoryboard(name: NSStoryboard.Name("Main"), bundle: nil)
        let windowController = storyboard.instantiateController(withIdentifier: NSStoryboard.SceneIdentifier("Document Window Controller")) as! NSWindowController
        self.addWindowController(windowController)
    }

    override func data(ofType typeName: String) throws -> Data {
        throw NSError(domain: NSOSStatusErrorDomain, code: unimpErr, userInfo: nil)
    }


    override func read(from data: Data, ofType typeName: String) throws {
        fileContent = (try String(data: data, encoding: .utf8))!
    }


    // this fn is called every time textEdit changes the file content. 
    override func presentedItemDidChange() {
       // Here is the PROBLEM: 
       // HOW do I access the new file content?

    }


}

Вот проблема presentedItemDidChange() вызывается каждый раз, когда textEdit вносит изменения. Это прекрасно работает. Но я не могу до конца жизни понять, как получить доступ к новому file content, поэтому я могу переназначить fileContent = newContent. Какие-нибудь мысли?

1 Ответ

0 голосов
/ 06 ноября 2018

Я бы назвал документ readFromURL:ofType:error:, как описано здесь .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...