2017-02-01 14 views
0

イメージを含むNSAttributedStringをパッケージに保存するドキュメントベースのアプリケーションを作成しました。私はアプリケーションを実行し、テキストビューに画像を追加して保存しました。NSTextViewの不足している制約が検出されました

[Layout] Detected missing constraints for <NSTextField: 0x100b3f480>. It cannot be placed because there are not enough constraints to fully 
define the size and origin. Add the missing constraints, or set 
translatesAutoresizingMaskIntoConstraints=YES and constraints will be generated for you. If this view is laid out manually on macOS 10.12 and later, 
you may choose to not call [super layout] from your override. Set a breakpoint on DETECTED_MISSING_CONSTRAINTS to debug. This error will only be logged once. 

Document.swift:

enum CookRecipesFileNames : String { 

    case notes = "Notes.rtfd" 
} 

class Document: NSDocument { 

    var documentFileWrapper = FileWrapper(directoryWithFileWrappers: [:]) 

    var popover : NSPopover? 

    var notes : NSAttributedString = NSAttributedString() 

    ... 

    override class func autosavesInPlace() -> Bool { 
     return true 
    } 

    override func fileWrapper(ofType typeName: String) throws -> FileWrapper { 

     let notesRTFdata = try self.notes.data(from: NSRange(0..<self.notes.length), documentAttributes: [NSDocumentTypeDocumentAttribute: NSRTFDTextDocumentType]) 

     if let oldTextFileWrapper = self.documentFileWrapper.fileWrappers?[CookRecipesFileNames.notes.rawValue] { 
      self.documentFileWrapper.removeFileWrapper(oldTextFileWrapper) 
     } 

     self.documentFileWrapper.addRegularFile(withContents: notesRTFdata, preferredFilename: CookRecipesFileNames.notes.rawValue) 

     return self.documentFileWrapper 
    } 

    override func read(from fileWrapper: FileWrapper, ofType typeName: String) throws { 
     guard let documentNotesData = fileWrappers[CookRecipesFileNames.notes.rawValue]?.regularFileContents else { 
      throw err(.cannotLoadNotes) 
     } 

     guard let documentNotes = NSAttributedString(rtfd: documentNotesData, documentAttributes: nil) else { 
      throw err(.cannotLoadNotes) 
     } 

     self.documentFileWrapper = fileWrapper 

     self.notes = documentNotes 
    } 

} 

すべてのヘルプは、でしょう、私は、ファイルを開いたときに、ダイアログボックスは、「文書は 『X』を開けませんでした」と、これがコンソールに出力されたと述べましたありがとう!

+1

Interface Builderで制約を設定しましたか、またはプログラムで制約を設定しましたか? – dylanthelion

+0

をインタフェースビルダーに設定してください – paper1111

+0

さて、回答を追加します。 – dylanthelion

答えて

0

「Detected missing constraints ...」という警告は、ビューに制約を追加したが、ビューのx、y座標、高さ、幅を決定するのに十分ではないことを示すビルド警告です。 IBに制約を加えない場合(ここではすべてを削除するオプションがあります)、XcodeはIBで使用されている正確な位置と寸法を使用するようにアプリケーションに指示します。ビューにANY制約を追加する場合は、座標と両方のディメンションの両方を決定するのに十分なだけ追加する必要があります。あなたの制約を維持したい場合(これは2番目の選択肢です)、IBに行き、左上の黄色または赤の警告エラーを探します:See this screenshot

これは、紛失し矛盾する拘束のリストを表示しますビューコントローラで

+1

エラーはコンパイラエラーではありませんが、 – paper1111

+0

あなたは正しいです、私の答えで申し訳ありません。これはビルド警告と共通の警告です。 IBに警告の矢印がありますか? – dylanthelion

+0

いいえ、私はそれを持っていません。写真を参照してください:[http://i.imgur.com/pLdBGKG.png](http://i.imgur.com/pLdBGKG.png) – paper1111

関連する問題