NSTableView Bindings mit Core Data

Seit einiger Zeit ist die Standard-Einstellung bei der Erzeugung von NSTableViews mit Xcode für den Content Mode "View Based", nicht mehr "Cell Based". Cell-based Table Views sollen nicht mehr verwendet werden. Die Bindings von View-based Table Views sind aber etwas unübersichtlich. Damit ich das nicht immer vergesse, hier die Anleitung:

  • Einen Array Controller in das XIB ziehen und bei den Attributen den Mode auf Entity Name stellen und den Entity Name eingeben. Dann bei den Bindings den Managed Object Context auf den von File's Owner setzen:

Bildschirmfoto 2017-03-19 um 15.34.29 Bildschirmfoto 2017-03-19 um 15.34.52


  • Table View selektieren und dann den Table Content im Bindings Inspector auf die Arranged Objects des Array Controllers stellen:

Bildschirmfoto 2017-03-19 um 15.38.20 Bildschirmfoto 2017-03-19 um 15.39.10


  • Das NSTextField Table View Cell (nicht Table Cell View) auswählen und im Bindings Inspector das Value an objectValue.meinAttribut des Table Cell Views binden:

Bildschirmfoto 2017-03-19 um 15.45.19 Bildschirmfoto 2017-03-19 um 15.45.34


Dann sollte es klappen. Hier im Beispiel heißt der Array Controller
Messreihe Controller, meinAttribut ist temperatur.


LAPACK auf dem Mac nutzen

LAPACK (Linear Algebra PACKage) ist eine Bibliothek zur Berechnung von linearen Gleichungssystemen. Sie ist in Fortran 90 geschrieben, hocheffizient, ausgereift und nutzt typische Eigenschaften und Fähigkeiten moderner Computer (Multi-Threading, Vektoreinheiten, Mehrprozessorsysteme). Auf dem Mac ist sie Teil des Betriebssystems OS X, sie fällt nur nicht so auf.
LAPACK ist Teil des Accelerate-Frameworks, das noch weitere Bibliotheken zur Daten- und Bildbearbeitung enthält, wie z.B. BLAS. Die Nutzung von LAPACK in eigenen Programmen ist einfach, wenn man erst einmal weiß, das sie schon da ist und wie sie eingebunden wird. Die LAPACK-Version, die in Mac OS X 10.8.4 (Mountain Lion) installiert ist, ist v3.2.1. Die aktuelle Version von LAPACK ist momentan 3.4.2. Wer also wirklich die neueste Version braucht, muss erst gfortran und BLAS installieren und damit LAPACK kompilieren und installieren. Das ist nicht so einfach, darum lassen wir das.
Um also LAPACK in einem C/C++/Objective C-Programm, dass in Xcode (v4.6.x) entwickelt wird, nutzen zu können, geht man folgendermaßen vor:
  • Neues Projekt erstellen, hier als Beispiel C Command Line Tool:
Pasted Graphic

  • Accelerate-Header einfügen (dieser Header fasst alle Header der enthaltenen Bibliotheken zusammen):
Pasted Graphic 1

  • Accelerate-Framework einbinden (beim Target in der Build Phase "Link Binary With Libraries" mit dem "+" hinzufügen):
Pasted Graphic 2

Pasted Graphic 3

Pasted Graphic 4

  • Gewünschte LAPACK-Funktionen aufrufen. Dabei ist zu beachten, dass die LAPACK-Version von Mac OS X eine f2c-übersetzte Version ist und die Beispiele auf der LAPACK-Website zur Nutzung mit C nicht direkt funktionieren. Die Routinen sind anders benannt: Um z.B. die Fortran-Routine DGETRF aufzurufen, muss man nicht LAPACKE_dgetrf nutzen, sondern dgetrf_() . Die Deklarationen der Funktionen findet man im Header clapack.h, den man im Accelerate-Framework findet (Accelerate.framework/Frameworks/vecLib.framework/Headers):
Pasted Graphic 5

Die LAPACK-Routinen enthalten Input- und Output-Parameter in der Parameterliste. Da in C nur By Value übergeben werden kann, müssen die Output-Parameter als Zeiger übergeben werden. In CLAPACK werden aber alle Parameter als Zeiger übergeben. Wie dem Header auch zu entnehmen ist, ist z.B. die Routine DGELS so definiert:

int dgels_(char *trans, __CLPK_integer *m, __CLPK_integer *n, __CLPK_integer *
nrhs, __CLPK_doublereal *a, __CLPK_integer *lda, __CLPK_doublereal *b, __CLPK_integer *ldb,
__CLPK_doublereal *work, __CLPK_integer *lwork, __CLPK_integer *info)
__OSX_AVAILABLE_STARTING(__MAC_10_2,__IPHONE_4_0);

Das DGELS-Beispiel aus der Anleitung "The LAPACK C Interface to LAPACK", dort für LAPACK C Interface beschrieben, sieht dann für CLAPACK so aus:

Pasted Graphic 6

Weitere Informationen zu LAPACK auf dem Mac und dem Accelerate-Framework findet man auch im Xcode-Organizer, wenn man dort nach "Accelerate" sucht.

Xcode 4.3 stürzt beim Start des Debuggers ab

Mit einem Projekt, dass als Target Mac OS X 10.6 hat und den Default Compiler (Apple LLVM Compiler 3.1) nutzt, hatte ich mehrmals das Problem, dass beim Starten des Debuggers Xcode abstürzt. Gleiches Verhalten mit Xcode 4.3.2 und 4.3.3. Der Crash Report schlägt vor, Xcode neu aus dem App Store zu laden. Nutzt aber nichts. Auch ein Clean Build, Neustart des Rechners etc. nutzt nichts. Was aber hilft, ist, GCC_VERSION von Apple LLVM Compiler 3.1 auf LLVM GCC 4.2 umzuschalten und das Target neu zu kompilieren. Dann kann man mit diesem Code debuggen, aber auch wieder zurück umstellen, neu kompilieren und mit der gewünschten Default-Konfiguration weiterarbeiten.

Speicherwarnungen bei der Arbeit mit Word und MathType auf dem Mac

Beim Bearbeiten von Word-Dokumenten mit vielen MathType-Formeln kann es zu Beschädigungen der Dokumente kommen, insbesondere, wenn man Formeln kopiert oder umherschiebt. Das macht sich mit seltsamen Warnungsdialogen über fehlenden Speicher bemerkbar. Manchmal lässt sich ein Dokument dann nicht mehr vollständig anzeigen oder drucken. Um solche Dokumente zu retten, kann man folgendes tun:
  • Dokument öffnen, im MathType-Menü von Word "Format Equations..." auswählen, im erscheinenden Dialog "MathType's New Equation preferences" und "Whole Document" auswählen und mit OK bestätigen. MathType formatiert dann sämtliche Formeln im Dokument mit den aktuellen Einstellungen um (also Vorsicht, wenn die nicht passen) und setzt sie nebenbei wieder "ordentlich" in das Dokument ein. Dokument sichern, schließen und neu öffnen. Die Situation sollte sich entspannt haben.
  • Bei Dokumenten im alten DOC-Format (nicht DOCX), das ziemlich fehleranfällig ist, hilft manchmal das Speichern als RTF-Dokument. Es bleiben dabei nach meiner Erfahrung alle Formatierungen, Formeln und Bilder intakt. Dieses RTF-Dokument kann man öffnen und als DOCX wieder speichern. Dieses Dateiformat ist wesentlich stabiler. Nachteil ist, dass DOCX-Dateien mit vielen Formeln (oder vielen Bildern) sehr lange zum Öffnen brauchen.

Word/MathType-Installation

Hier sind ein paar Hinweise zur Installation von Word 2011 und MathType 6.7 auf dem Mac (Mac OS X 10.6 und 10.7):
  • Es empfiehlt sich, nach jedem Update von Word MathType erneut zu installieren. MathType-Einstellungen bleiben dabei vorhanden.
  • In der deutschen Word-Version kommt es vor, dass die MathType-Funktionalitäten (Toolbar und Menü) nach jedem Start von Word nachgeladen werden müssen (mit "Extras", "Vorlagen und Add-ins"). Um das abzustellen, kann man folgendes tun:
  • "Word" - "Einstellungen..." - "Dateispeicherorte" auswählen

  • Den Dateispeicherort "AutoStart" ändern auf "Macintosh HD:Applications:Microsoft Office 2011:Office:Start:Word" (Festplattenname kann natürlich anders sein). Dazu wählt man den entsprechenden Ordner im Programme-Verzeichnis über den "Ändern..."-Button im Dateispeicherorte-Dialog aus.

  • Word neu starten. Die MathType-Toolbar und das Menü müssten erscheinen.