2017-11-17 9 views
-1

Ich bin ein Anfänger lernen Swift und xcode durch Umschreiben eines Codes, den ich ursprünglich in Javascript/PHP/MySql entwickelt. Ich arbeite in macOS und nutze ein Storyboard in xcode als Basis für die Entwicklung. Im Moment entwickle ich eine SplitView. Auf der Master-Seite habe ich eine OutlineView. Es hat drei Ebenen, die äußeren zwei sind erweiterbar und bis heute funktionierte es gut. Alle Ebenen wurden aufgefüllt, sichtbar und ggf. erweiterbar. Ich habe Swift (4.0) und xcode (9.1) soweit ich weiß aktualisiert. Also entschied ich heute, dass es Zeit war, von Sierra nach High Sierra zu wechseln. Meine Masteransicht ist jetzt vollständig leer. Nada. Ich habe versucht, das Problem zu verfolgen und entdeckte mit dem Debugger in xcode, dass die outlineView-Funktion in der NSOutlineViewDelegate-Erweiterung zu meinem MasterViewController anscheinend überhaupt nicht aufgerufen wird! Ich habe den Connections Inspector überprüft und die Verbindungen zu DataSource und Delegate sind noch intakt. Ich suchte online und fand ein paar Leute mit scheinbar unbestimmten neueren Problemen im Zusammenhang mit Cocoa-Bindungen, aber ich konnte ihre Problemlösung nicht mit meinen verbinden, da ich keine Cocoa-Bindungen verwende ... es steht auf meiner Liste, aber ich bin es noch nicht da. Das Einzige, von dem ich weiß, dass es sich geändert hat, war von Sierra nach High Sierra. Irgendwelche Vorschläge? Vielen Dank!NSOutlineViewDelegate in High Sierra funktioniert nicht

HINZUGEFÜGT: Ich weiß jetzt ein bisschen mehr über das Problem.

Hier ist der Code, der vor der High Sierra arbeitet:

Klasse Viewcontroller: NSViewController {

@IBOutlet schwach var webView: WebView!

@IBOutlet schwach var outlineView: NSOutlineView!

var Feeds =

Feed-

lassen dateFormatter = DateFormatter()

Überschreibung func viewDidLoad() {

super.viewDidLoad() 

dateFormatter.dateStyle = .short 

if let filePath = Bundle.main.path(forResource: "Feeds", ofType: "plist") { 
    feeds = Feed.feedList(filePath) 
    print(feeds) 
} 

}

Der Code aus einem Tutorial auf der OutlineView genommen wird auf der Ray_Wenderlich.com Seite. Ich habe meinen Code danach gemustert und sowohl das Tutorial als auch mein Code funktionierten ... bis High Sierra. Offenbar würde das System bis High Sierra spontan "Feeds" parsen und die outlineView-Anzeige generieren. Bei High Sierra änderte sich das Verhalten und es entstand nicht mehr spontan der outlineView, weder im Tutorial noch in meinem Projekt. Das Ergebnis war ein leerer outLineView.

In einem Kommentar zum Tutorial hinzugefügt, finde ich jetzt, dass jemand anderes das gleiche Verhalten begegnet war und schlug vor, dass der Code jetzt benötigt:

outlineView.reloadData(),

aber meine naive Umsetzung dieser Vorschlag einfach einen Laufzeitfehler erzeugt,

„[NSView reload]: Unbekannter Selektor an Instanz gesendet“

+2

Bitte formatieren Sie Ihre Fragen, es sieht schwer zu lesen –

+2

Zeigen Sie Ihre Arbeit. "Nicht funktioniert" funktioniert nur für Sie, wenn Sie keine Hilfe für Ihre englische Kompositionsklasse benötigen. –

+0

stimme @ElTomato zu –

Antwort

0

nur sicherstellen, dass, wenn Sie einen neuen ‚Spielplatz‘ starten Sie macOS als haben appl Icing überprüft und nicht IOS. Wenn Sie IOS aktiviert haben, wird Swift UIKit (anstelle von Cocoa) importieren, was zu Ihrem Problem führen wird. GL.

Verwandte Themen