Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Tutorials zu Xcode für Macprogrammierung?

2 views
Skip to first unread message

Steffen Bendix

unread,
Feb 6, 2021, 10:11:02 AM2/6/21
to
Ich finde einfach kein gescheites Tutorial, welches mich an die Hand nimmt und
ein einfaches Programm in Xcode und dem Interface Builder Schritt für Schritt
entwickelt. Offenbar scheinen alle nur iOS-Apps zu programmieren. Selbst Apple
geht in der Developer-Hilfe nur auf iOS und Swift ein. Ich möchte aber
verstehen, wie man ein funktionelles Interface für den Mac baut, damit der
Programmcode auch zu was nütze ist. Kann mir jemand was Gutes nennen?

Steffen


John Doe

unread,
Feb 6, 2021, 12:25:22 PM2/6/21
to
On 06.02.2021 at 16:11:01 MEZ, "Steffen Bendix"
Hi!

google mal nach "osx ray wunderlich swift"
dort findest du sowas wie:
macOS Development for Beginners: Part 1-3

Ich habe auch erst mit iOS programmierung in swift angefangen und mich dann zu
OSX gewandt.


Steffen Bendix

unread,
Feb 7, 2021, 8:53:40 AM2/7/21
to
On 6. Feb 2021 at 18:25:21 CET, "John Doe" <john...@myemail.invalid> wrote:

> google mal nach "osx ray wunderlich swift"

Schon längst gemacht und auch ein iOS-Tutorial durchgearbeitet. Es geht mir
aber explizit um Mac OS für Anfänger und da hat auch der gute Ray nichts im
Angebot.

Es ist echt wie verhext. Es scheint keiner für den Mac zu entwickeln oder alle
haben aus dem Stand heraus und ohne externe Hilfe die Interfaceverdrahtung in
Xcode gelernt.

Steffen


John Doe

unread,
Feb 7, 2021, 11:17:23 AM2/7/21
to
On 07.02.2021 at 14:53:26 MEZ, "Steffen Bendix"
<unbeliebte20...@yahoo.de> wrote:

> On 6. Feb 2021 at 18:25:21 CET, "John Doe" <john...@myemail.invalid> wrote:
>
>> google mal nach "osx ray wunderlich swift"
>
> Schon längst gemacht und auch ein iOS-Tutorial durchgearbeitet. Es geht mir
> aber explizit um Mac OS für Anfänger und da hat auch der gute Ray nichts im
> Angebot.

Nö, ich finde, das:
https://www.raywenderlich.com/731-macos-development-for-beginners-part-1
eigentlich schon SEHR nach "OSX", "Entwicklung" und "Anfänger" klingt.
Davon gibt es auch noch Part 2 und 3 sowie:

https://www.raywenderlich.com/450-menus-and-popovers-in-menu-bar-apps-for-macos
https://www.raywenderlich.com/511-command-line-programs-on-macos-tutorial
etc...
Alles gefunden auf:

https://www.raywenderlich.com/macos

Was stört dich denn daran? Oder anders herum: was erwartest du an
Hilfestellung, die auf diesen Webseiten nicht gezeigt wird?
Ich hab eben noch mal die Seite mit "part 1" gelesen und da ist eigentlich
genau die Vorgehensweise beschrieben, die deiner Fragestellung entspricht
(zumindestens hab ich deine Frage so verstanden!)

>
> Es ist echt wie verhext. Es scheint keiner für den Mac zu entwickeln oder
> alle
> haben aus dem Stand heraus und ohne externe Hilfe die Interfaceverdrahtung in
> Xcode gelernt.
>
> Steffen
>

Ich habe zwar eine Vorbildung im Sinne der Programmierung (>25 Jahre
Entwicklung von Assembler über C bis Java), aber in der Entwicklung von iOS-
oder OSX-Programmen bin ich auch erst seit 3 Jahren dabei. Und da war es auch
eine "von der Pike an"-Lernphase, weil XCode doch eine ganz andere
Herangehensweise erfordert. Gerade die Zusammenhänge zw. Layout der Elemente
(Button, Label, ...) und die Ausführung/Zuordnung von Programmteilen aufgrund
von Aktionen (z.B. durch das Drücken eines Buttons) ist halt ganz anders, als
bei anderen Entwicklungsumgebungen.

Zugegeben (wie ich schon schrieb), habe ich auch zuerst mit iOS angefangen
(und bin erst später zu OSX gekommen), und für iOS scheint es eine Menge mehr
an Tutorials zu geben als für OSX, aber gerade Mr. Wenderlich hat für beide
Systeme (mMn) hervorragende Lehr-Seiten geschrieben (und nein, ich bin nicht
verwandt oder verschwägert ... :-) , noch bekomme ich Geld...)

Bitte, schau dir doch mal die angegebenen Seiten an und beschreibe dann, was
du anderes erwartest/was dich stört/was dir fehlt. Vielleicht habe ich dich ja
auch völlig falsch verstanden...

Schönes Rest-WE...




Steffen Bendix

unread,
Feb 7, 2021, 12:53:31 PM2/7/21
to
Danke, dieses Tutorial habe ich bei ihm irgendwie übersehen. Ja, der Typ
erklärt echt gut.

Was mir bei den wenigen Anleitungen im Netz fehlt, ist eine hinreichende
Erklärung, warum man bestimmte Codeschnipsel einzufügen hat. Man kann zwar den
Schritten folgen (bis es auf der Hälfte meist nicht mehr weitergeht, weil die
Tutorials veraltet sind) und soll dann bestimmten Code einfügen, um die
GUI-Element zu verknüpfen, aber es wird nicht erklärt, welche Elemente man
sonst noch so braucht, um bestimmte Dinge zu erreichen. Ich brauche z.B. ein
Textfeld mit einzeln anklickbaren Zeilen. Es wird erklärt, wie man ein
Textfeld anlegt, aber dann? Woher soll ich die Codeschnipsel kennen, die
weiter notwendig sind? Das ist ungefähr so, wie bei Linux. Es gibt da
Befehlsketten, die kann kein Mensch kennen, wenn er nicht IT studiert hat.

Egal, dies ist hoffentlich ein Anfang. Vielen Dank
Steffen


Steffen Bendix

unread,
Feb 9, 2021, 6:47:27 AM2/9/21
to
On 7. Feb 2021 at 18:53:22 CET, "Steffen Bendix"
<unbeliebte20...@yahoo.de> wrote:

> Danke, dieses Tutorial habe ich bei ihm irgendwie übersehen.

So, schon auf der Hälfte von Teil 3 wirft Xcode mit Fehlern, obwohl ich alles
haargenau so abgetippt habe. Selbst das vollständige Projekt des Autors,
welches man von der Internetseite herunterladen kann, läßt sich nicht
kompilieren und gibt Fehler aus. Wie soll man so programmieren lernen?

Der Anfang war ja noch verständlich, aber dann werden dort plötzlich
Codezeilen aufgeführt aber nicht erklärt. Das ist genau das, was ich mit
meiner initialen Frage gemeint habe. Ich kann zwar stupide die Befehle
abtippen und verstehe vielleicht auch die Hälfte davon aber von der anderen
Hälfte habe ich keine Ahnung, wieso die da nun eingefügt werden müssen und
wozu sie gut sind. Da würde ich alleine nie drauf kommen, der Verfasser des
Tutorials erklärt es aber auch nicht. Also, wie jetzt?

Und wieder einmal muß ich ein Tutorial auf halbem Wege abbrechen, weil es
nicht funktioniert. Das ist extrem frustrierend. Das beste wird sein, ich
suche mir einen lebenden Menschen, mit dem ich direkt zusammen programmiere,
damit ich Fragen stellen kann und der mir gleich erklären kann, warum ich nun
diesen und jenen Befehl eingeben muß. Die paar Tutorials zu
MacOS-Programmierung im Internet sind Mist.

Steffen


John Doe

unread,
Feb 9, 2021, 8:51:41 AM2/9/21
to
On 09.02.2021 at 12:47:26 MEZ, "Steffen Bendix"
<unbeliebte20...@yahoo.de> wrote:

Hi. Da fühle ich mich doch noch mal angesprochen.

>> Danke, dieses Tutorial habe ich bei ihm irgendwie übersehen.
>
> So, schon auf der Hälfte von Teil 3 wirft Xcode mit Fehlern, obwohl ich alles
> haargenau so abgetippt habe. Selbst das vollständige Projekt des Autors,
> welches man von der Internetseite herunterladen kann, läßt sich nicht
> kompilieren und gibt Fehler aus. Wie soll man so programmieren lernen?
Das ist in der Tat schwierig.
Wenn ich das so lese, stellen sich für mich folgende Fragen:
1. Hast du garkeine Vorkenntnisse in Sachen Programmierung? (Das ist nicht
wertend gemeint. Ich frage nur, um deinen Kenntnisstand zu erfahren)
2. Mit welcher Version von XCode arbeitest du?
3. Welche Betriebssystem Version läuft bei dir?
4. Wie gut ist dein Englisch?
5. Zu welchem Zweck möchtest du programmieren (lernen)? (Beruf oder aus
Spaß/Privat)

Die Fragen stelle ich aus folgendem Grund: Die Entwicklung von XCode und Swift
schreitet ja ständig voran. Die Internet-Kurse allerdings nicht unbedingt. So
kann es sein, das du mit einer älteren XCode/Swift-Version arbeitest, als der
Autor der Internet-Seite. Dann kennt dein XCode/Swift die "neueren" Befehle,
die der Autor verwendet, halt noch nicht. Da bist du relativ aufgeschmissen,
weil XCode dir da keine Hilfe geben kann (mangels wissen von der XCode-Seite
her). Anders herum ist es (meist) etwas einfacher, weil XCode die "alten"
Swift-Befehle kennt und dir eine Hilfe bei der Umkodierung anbieten kann/wird.
Als Beispiel: Du arbeitest mit Swift 3 und der Code von der Webseite ist noch
in Swift 2 geschrieben. Da wird dir XCode beim Erzeugen des Codes (also deine
handschriftliche Eingabe) anmerken, das es diesen oder jenen Befehl nicht mehr
gibt, und dir (meist) einen "besseren, weil neueren" Befehl anbieten.

Was mir eine Hilfe war, ist (trotzdem) das Internet, indem ich dort die
entsprechenden "alten" Befehle hab suchen lassen und dann oft auf eine Seite
gestossen bin, die das Problem in mehreren Swift-Versionen (2,3,4,5) gelöst
haben. (Die Seite https://stackoverflow.com ist sehr hilfreich. Wobei ich dort
weniger Fragen gestellt habe, sondern Google hat Links gezeigt, die auf diese
Seite führen) Die Apple-Developer-Seiten find ich nicht so hilfreich, weil es
da keine Beispiele gibt.

> Der Anfang war ja noch verständlich, aber dann werden dort plötzlich
> Codezeilen aufgeführt aber nicht erklärt. Das ist genau das, was ich mit
> meiner initialen Frage gemeint habe. Ich kann zwar stupide die Befehle
> abtippen und verstehe vielleicht auch die Hälfte davon aber von der anderen
> Hälfte habe ich keine Ahnung, wieso die da nun eingefügt werden müssen und
> wozu sie gut sind.
Manchmal hilft da XCode selber weiter, indem du auf den Befehl mit gedrückter
"alt"-Taste klickst, Dann erscheint eine Hilfe zu dem Befehl. Allerdings alles
in Englisch (daher meine Frage nach deinen Englisch-Kenntnissen)

> Da würde ich alleine nie drauf kommen,
Das Problem kenne ich. :-) Aber auch da hilft Google. Versuch doch einfach,
dein grundsätzliches Problem in Klartext ("wie erzeuge ich eine Tabelle in
Swift 4 bei OSX") einzugeben (oder etwas mehr im TelegrammStil (kennt das
heute noch jemand: Telegram?) Also z.B. "OSX Swift4 Tabelle". Du wirst dich
dann zwar durch 10000 Seiten wühlen müssen, um eine Antwort für dein konkretes
Problem zu finden, aber es hilft.
Das größte Problem bei den vielen Antworten ist halt herauszufinden, warum
Google auch so viele iOS Seiten mit anzeigt, wo doch expliziet nach OSX
gefragt wurde. Aber das hast du ja auch schon herausgefunden. :-) )

> der Verfasser des
> Tutorials erklärt es aber auch nicht. Also, wie jetzt?
Ja, das ist ein grundsätzliches Problem. Für ihn ist es trivial, das er den
Befehl nutzt. Allerdings kann er auch nicht jede einzelne Befehlsvariante in
dem Tutorial besprechen, denn dann langweilt er alle Leser, die schon etwas
mehr wissen.

> Und wieder einmal muß ich ein Tutorial auf halbem Wege abbrechen, weil es
> nicht funktioniert. Das ist extrem frustrierend. Das beste wird sein, ich
> suche mir einen lebenden Menschen, mit dem ich direkt zusammen programmiere,
> damit ich Fragen stellen kann und der mir gleich erklären kann, warum ich nun
> diesen und jenen Befehl eingeben muß.
Das ist vermutlich die einfachste Variante. Nur ist das in CoronaZeiten nicht
so leicht zu realisieren (räumliche Trennung etc), es sei denn, du gehst zu
einem Anbieter von Kursen, der dir dann per Online-Verbindung "Rede und
Antwort" steht, bzw. online (Video-Konferenz per Zoom o.ä.) alles
"vorprogrammiert" und du bei Unverständnis dann Fragen stellen kannst.

> Die paar Tutorials zu
> MacOS-Programmierung im Internet sind Mist.
Nee, das kann ich so nicht unterstützen. Die Schwierigkeit dabei ist halt, wie
man am besten, die Spreu vom Weizen trennt. Leider findet man das meist erst
heraus, wenn man die Spreu getestet hat und es nicht das ist, was man haben
will.

Wie ich gerade gesehen habe (nachdem ich es "gedownloaded" habe (hach, ich
liebe diese schönen neuen deutschen Worte)) ist Teil 3 vom Wunderlich-Projekt,
in Swift 3 geschrieben. Wenn Du allerdings mit der aktuellen XCode Version und
"Swift 5.irgendwas" arbeitest, gibt sich Xcode da vermutlich etwas reserviert.
(Ich arbeite mit XCode 10.1 auf einem High-Sierra (10.13.x) Das ist also auch
schon recht veraltet, aber mein Rechner gibt halt nicht mehr her. Da kann ich
auch nur mit maximal Swift 4 arbeiten) Aber das geht.
Normalerweise bietet Xcode die Möglichkeit an, den vorhandenen Code in eine
ihm (XCode!) zusagende Version umzubauen (Das ist aber auch nicht immer
erfolgreich, und dann hast du die gleichen Probleme wie vorher :-( )
Hast du das mal durchgeführt?

MfG und bleib gesund.

JD


Steffen Bendix

unread,
Feb 9, 2021, 11:17:38 AM2/9/21
to
On 9. Feb 2021 at 14:51:40 CET, "John Doe" <john...@myemail.invalid> wrote:

>
> 1. Hast du garkeine Vorkenntnisse in Sachen Programmierung? (Das ist nicht
> wertend gemeint. Ich frage nur, um deinen Kenntnisstand zu erfahren)

Doch. Programmiert habe ich mit HyperScript (HyperCard) und AppleScript und
habe mir damals in meinem Studium diverse hilfreiche Programme geschrieben. In
Swift habe ich einiges an Tutorials durch und kenne die grundlegenden Dinge
wie Variablen, Funktionen etc.. Ich bin in der Lage ein einfaches Programm zu
schreiben, welches im Playground läuft. Ich benötige aber eins, welches
Interaktionen mit dem Benutzer zuläßt. Deswegen will ich mit Xcode ein
funktionierendes Interface bauen.

>
> 2. Mit welcher Version von XCode arbeitest du?

Die momentan neueste Version 12.4.

>
> 3. Welche Betriebssystem Version läuft bei dir?

Catalina 10.15.7

>
> 4. Wie gut ist dein Englisch?

Ich habe Anglistik studiert.

>
> 5. Zu welchem Zweck möchtest du programmieren (lernen)? (Beruf oder aus
> Spaß/Privat)

Für mich selbst, allerdings wäre das dann gleichzeitig auch beruflich. Für den
Eigenbedarf sozusagen.

>
>
> So
> kann es sein, das du mit einer älteren XCode/Swift-Version arbeitest, als der
> Autor der Internet-Seite. Dann kennt dein XCode/Swift die "neueren" Befehle,
> die der Autor verwendet, halt noch nicht.

Es ist genau andersrum. Die Tutorials sind sämtlich zu alt. Sogar die von
Apple.

>
> Manchmal hilft da XCode selber weiter, indem du auf den Befehl mit gedrückter
> "alt"-Taste klickst, Dann erscheint eine Hilfe zu dem Befehl.

Das ist mir bekannt. Die Hilfe sagt mir aber leider nicht, WARUM ich diesen
Befehl nun nutzen muß. Ich weiß nicht, wie ich es anders ausdrücken soll.
Natürlich kann ich aus einem fertigen Tutorial mir Befehle und ganze
Funktionen und dergleichen über die Hilfe näher erläutern lassen, wenn ich
aber selbst was programmiere, weiß ich doch gar nicht, daß ich diese Befehle
brauche, ja, daß sie überhaupt existieren. Hier ein Beispiel aus Teil 3 des
angesprochenen Tutorials:

dynamic func timerAction() {
guard let startTime = startTime else {
return
}

elapsedTime = -startTime.timeIntervalSinceNow

let secondsRemaining = (duration - elapsedTime).rounded()

if secondsRemaining <= 0 {
resetTimer()
delegate?.timerHasFinished(self)
} else {
delegate?.timeRemainingOnTimer(self, timeRemaining: secondsRemaining)
}
}


Was ist eine "dynamic func"? Ich kann mir das übersetzen aber dazu steht
nichts in der Dokumentation. Wer sagt mir, daß ich sowas benötige? Was soll
"guard let" sein? Was ist "guard"? Steht auch nicht in der Dokumentation. Wie
die Berechnungen und die Bedingung dort funktionieren, verstehe ich. Mein
Problem ist, daß ich nicht weiß, welche Befehle ich benutzen muß. Konkret in
dem Beispiel, daß ich eine dynamische Funktion statt einer einfachen Funktion
nutzen muß oder eine "guard"-Konstante anstatt einer einfachen. Dieser
Programmteil wirft übrigens die meisten Fehler aus.

>
> Das Problem kenne ich. :-) Aber auch da hilft Google. Versuch doch einfach,
> dein grundsätzliches Problem in Klartext ("wie erzeuge ich eine Tabelle in
> Swift 4 bei OSX") einzugeben (oder etwas mehr im TelegrammStil (kennt das
> heute noch jemand: Telegram?) Also z.B. "OSX Swift4 Tabelle". Du wirst dich
> dann zwar durch 10000 Seiten wühlen müssen, um eine Antwort für dein
> konkretes
> Problem zu finden, aber es hilft.

Naja, recherchieren kann ich schon. Weil ich aber nach langer Suche eben
nichts gefunden habe, habe ich hier gefragt. Ich frage nie sofort im Usenet,
bevor ich nicht längere Zeit selbst nach einer Lösung gesucht habe. Aber es
scheitert schon an der lumpigen Aufgabenstellung eines lauffähigen, leicht
nachvollziehbaren Tutorials für die Programmierung eines GUI-Macprogramms mit
Xcode. Man kommt immer nur bei iOS raus. Damit kann ich aber nur wenig
anfangen, weil die GUI-Programmierung sich sehr stark von der von MacOS
unterscheidet. Als Anfänger kann ich das Wissen eines iOS-Tutorials auch nicht
so einfach auf die Programmierung für MacOS transferieren.

>
> Ja, das ist ein grundsätzliches Problem. Für ihn ist es trivial, das er den
> Befehl nutzt. Allerdings kann er auch nicht jede einzelne Befehlsvariante in
> dem Tutorial besprechen, denn dann langweilt er alle Leser, die schon etwas
> mehr wissen.

Nein, denn das Tutorial ist explizit für Anfänger, die keinerlei
Programmiererfahrung haben. Das wird zu Anfang auch geschrieben. Da kann man
erwarten, daß für die Leser eben nichts trivial ist und alles erklärt werden
muß, jeder Schritt. Ansonsten kann man es gleich bleibenlassen.

>
>> Die paar Tutorials zu
>> MacOS-Programmierung im Internet sind Mist.
> Nee, das kann ich so nicht unterstützen. Die Schwierigkeit dabei ist halt,
> wie
> man am besten, die Spreu vom Weizen trennt. Leider findet man das meist erst
> heraus, wenn man die Spreu getestet hat und es nicht das ist, was man haben
> will.

Da muß ich leider widersprechen. Die Anfängertutorials für die
Macprogrammierung sind Mist. Erstens, weil sie viel zu wenig erklären (siehe
oben) und zweitens, weil sie nicht (mehr?) funktionieren und nie aktualisiert
werden. Ich hatte mir dereinst ein Buch zu Swift gekauft. Das war zu der Zeit
aktuell. Trotzdem haben die dort abgedruckten Listings nicht funktioniert.
Auch wurden zwei Drittel des Buches lang nur Befehle vorgestellt aber nicht
parallel dazu ein Programm entwickelt. Erst am Ende kam das Programmieren
dran, dann ging es aber nur noch ums Abtippen des dort abgedruckten Codes. Das
ist didaktisch völlig inakzeptabel. Aber leider ist das im Internet nicht viel
anders. Das Buch habe ich nach kurzer Zeit zurückgeschickt. Es war wertlos.

>
> Normalerweise bietet Xcode die Möglichkeit an, den vorhandenen Code in eine
> ihm (XCode!) zusagende Version umzubauen (Das ist aber auch nicht immer
> erfolgreich, und dann hast du die gleichen Probleme wie vorher :-( )
> Hast du das mal durchgeführt?

Als ich das Projekt von der Seite geladen habe, hat Xcode gemeckert, daß es
mit einer alten Version erstellt wurde und gefragt, ob es migrieren soll. Das
habe ich zugelassen, das Programm hat kurz genuddelt und ähnliche Fehler wie
in meinem Code angezeigt. Kompilieren läßt er sich aber auch nur nicht. Selbst
wenn ich die Compiler-Sprache umstelle, geht es nicht. Bei Swift 4 schimpft er
nicht, bei 5 dagegen schon. Trotzdem bleibt der Code fehlerhaft.

Egal, ich finde mich damit ab, daß ich wohl nie auf einen grünen Zweig kommen
werde. Dies war jetzt mein vierter Anlauf, die Macprogrammierung zu erlernen.
Irgendwie habe ich keine Motivation mehr, immer mittendrin abbrechen zu
müssen, weil die Hilfen plötzlich meinen, einen mit einem halbfertigen Projekt
stehenzulassen.

Vielen Dank Dir für Deine Mühe,
Steffen


John Doe

unread,
Feb 9, 2021, 4:12:10 PM2/9/21
to
On 09.02.2021 at 17:17:37 MEZ, "Steffen Bendix"
<unbeliebte20...@yahoo.de> wrote:

> On 9. Feb 2021 at 14:51:40 CET, "John Doe" <john...@myemail.invalid> wrote:
>>
>> 1. Hast du garkeine Vorkenntnisse in Sachen Programmierung? (Das ist nicht
>> wertend gemeint. Ich frage nur, um deinen Kenntnisstand zu erfahren)
>
> Doch. Programmiert habe ich mit HyperScript (HyperCard) und AppleScript und
> habe mir damals in meinem Studium diverse hilfreiche Programme geschrieben.
> In
> Swift habe ich einiges an Tutorials durch und kenne die grundlegenden Dinge
> wie Variablen, Funktionen etc.. Ich bin in der Lage ein einfaches Programm zu
> schreiben, welches im Playground läuft. Ich benötige aber eins, welches
> Interaktionen mit dem Benutzer zuläßt. Deswegen will ich mit Xcode ein
> funktionierendes Interface bauen.
Ok, also bist du nicht ein kompletter Neuling, gut.

>> 4. Wie gut ist dein Englisch?
> Ich habe Anglistik studiert.
:-) Na dann reichts es ja geraaaade so aus :-)

>> 5. Zu welchem Zweck möchtest du programmieren (lernen)? (Beruf oder aus
>> Spaß/Privat)
> Für mich selbst, allerdings wäre das dann gleichzeitig auch beruflich. Für
> den
> Eigenbedarf sozusagen.
Ok, also nicht lebesnotwendig, sonder eher Mittel zu Zweck.

>> So
>> kann es sein, das du mit einer älteren XCode/Swift-Version arbeitest, als
>> der
>> Autor der Internet-Seite. Dann kennt dein XCode/Swift die "neueren" Befehle,
>> die der Autor verwendet, halt noch nicht.
> Es ist genau andersrum. Die Tutorials sind sämtlich zu alt. Sogar die von
> Apple.
Ja, hatte ich ja auch später geschrieben (das ist im Prinzip eigentlich der
einfachere Fall. (Du siehst das wohl anders!))

>> Manchmal hilft da XCode selber weiter, indem du auf den Befehl mit
>> gedrückter
>> "alt"-Taste klickst, Dann erscheint eine Hilfe zu dem Befehl.
> Das ist mir bekannt. Die Hilfe sagt mir aber leider nicht, WARUM ich diesen
> Befehl nun nutzen muß. Ich weiß nicht, wie ich es anders ausdrücken soll.
Verstehe ich. Manchmal muss man das einfach so hinnehmen. Das ist nicht
wirklich befriedigend, hilft aber, wenn man das Programm weiterbringen will.

> Natürlich kann ich aus einem fertigen Tutorial mir Befehle und ganze
> Funktionen und dergleichen über die Hilfe näher erläutern lassen, wenn ich
> aber selbst was programmiere, weiß ich doch gar nicht, daß ich diese Befehle
> brauche, ja, daß sie überhaupt existieren.
>
> Hier ein Beispiel aus Teil 3 des
> angesprochenen Tutorials:
>
> dynamic func timerAction() {
> guard let startTime = startTime else {
> return
> }
...
> }
Das mit dem "dynamic" musste ich mir auch erst mal anschauen. Dazu findet sich
aber auch was im Netz:
https://cocoacasts.com/what-does-the-dynamic-keyword-mean-in-swift-3
Wobei ich mir nicht sicher bin, das diese Erklärung wirklich für dieses
Prgrammteil zutrifft.
Wenn ich mir den Part 3 anschaue, gibt es direkt unter der von dir zitierten
Stelle einen Code-schnipsel
<code>
// 1
func startTimer() {
startTime = Date()
elapsedTime = 0

timer = Timer.scheduledTimer(timeInterval: 1,
target: self,
selector: #selector(timerAction), <<<<-----
userInfo: nil,
repeats: true)
...
</code>

An der stelle wo ich "<<<<----" eingesetzt habe, wird auf deine zitierte
Funktion "timerAction" hingewiesen (#selector(...)).
Wenn du bei der eigentlichen Function das "dynamic" weg läßt, wird dem
Compiler nicht gesagt, das dieser Funktion eine besondere Beachtung geschenkt
werden muss.
Dieser selector sagt aus, das die dort beschriebene Funktion ausgeführt werden
soll. Anscheinend kann XCode nur mit diesem Hinweis (dynamic) erkennen, welche
Funktion im Timer als ausführbare Function genutzt werden soll.

Im Prinzip ist das genauso eine Anweisung, die man einfach nutzen muss (ja,
ich weiß: woher soll man das wissen? -> aus dem Lesen der Doku oder von
Beispielen im Netz) Aber andererseits nimmst du es ja vermutlich hin, das eine
Funktion mit "func" als Funktion gekennzeichnet werden muss. Auch das wirst du
vermutlich nicht hinterfragt haben, oder?

> Was ist eine "dynamic func"? Ich kann mir das übersetzen aber dazu steht
> nichts in der Dokumentation. Wer sagt mir, daß ich sowas benötige? Was soll
> "guard let" sein? Was ist "guard"? Steht auch nicht in der Dokumentation.
Da gibt es aber einiges an Beispielen o.ä. im Netz.

> Wie
> die Berechnungen und die Bedingung dort funktionieren, verstehe ich. Mein
> Problem ist, daß ich nicht weiß, welche Befehle ich benutzen muß. Konkret in
> dem Beispiel, daß ich eine dynamische Funktion statt einer einfachen Funktion
> nutzen muß oder eine "guard"-Konstante anstatt einer einfachen. Dieser
> Programmteil wirft übrigens die meisten Fehler aus.
Und XCode gibt dir da keine Hilfen? (Wie gesagt, mein XCode ist älteren
Datums, da gibt es viele Hilfen (die manchmal sogar weiterhelfen!))

>> Das Problem kenne ich. :-) Aber auch da hilft Google. Versuch doch einfach,
>> dein grundsätzliches Problem in Klartext ("wie erzeuge ich eine Tabelle in
>> Swift 4 bei OSX") einzugeben (oder etwas mehr im TelegrammStil (kennt das
>> heute noch jemand: Telegram?) Also z.B. "OSX Swift4 Tabelle". Du wirst dich
>> dann zwar durch 10000 Seiten wühlen müssen, um eine Antwort für dein
>> konkretes
>> Problem zu finden, aber es hilft.
> Naja, recherchieren kann ich schon. Weil ich aber nach langer Suche eben
> nichts gefunden habe, habe ich hier gefragt. Ich frage nie sofort im Usenet,
> bevor ich nicht längere Zeit selbst nach einer Lösung gesucht habe.
Sehr löbliche Einstellung (im Gegensatz zu vielen anderen Leuten, die erst
schießen und dann fragen (nee, falsches Zitat, aber du ahnst vermutlich, was
ich meine! :-))

> Aber es
> scheitert schon an der lumpigen Aufgabenstellung eines lauffähigen, leicht
> nachvollziehbaren Tutorials für die Programmierung eines GUI-Macprogramms mit
> Xcode. Man kommt immer nur bei iOS raus. Damit kann ich aber nur wenig
> anfangen, weil die GUI-Programmierung sich sehr stark von der von MacOS
> unterscheidet. Als Anfänger kann ich das Wissen eines iOS-Tutorials auch
> nicht
> so einfach auf die Programmierung für MacOS transferieren.
Nein, das ist wirklich nicht so einfach möglich.

>> Ja, das ist ein grundsätzliches Problem. Für ihn ist es trivial, das er den
>> Befehl nutzt. Allerdings kann er auch nicht jede einzelne Befehlsvariante in
>> dem Tutorial besprechen, denn dann langweilt er alle Leser, die schon etwas
>> mehr wissen.
> Nein, denn das Tutorial ist explizit für Anfänger, die keinerlei
> Programmiererfahrung haben. Das wird zu Anfang auch geschrieben. Da kann man
> erwarten, daß für die Leser eben nichts trivial ist und alles erklärt werden
> muß, jeder Schritt. Ansonsten kann man es gleich bleibenlassen.
Na, da kann man geteilter Meining sein, aber ich lass das mal so stehen. Dir,
als Betroffenen, fällt das eben eher auf.

>>> Die paar Tutorials zu
>>> MacOS-Programmierung im Internet sind Mist.
>> Nee, das kann ich so nicht unterstützen. Die Schwierigkeit dabei ist halt,
>> wie
>> man am besten, die Spreu vom Weizen trennt. Leider findet man das meist erst
>> heraus, wenn man die Spreu getestet hat und es nicht das ist, was man haben
>> will.
>
> Da muß ich leider widersprechen. Die Anfängertutorials für die
> Macprogrammierung sind Mist. Erstens, weil sie viel zu wenig erklären (siehe
> oben) und zweitens, weil sie nicht (mehr?) funktionieren und nie aktualisiert
> werden.
Das mit dem aktualisieren passiert schon manchmal (sehr selten), aber nur
wenige Autoren sind bereit, eine bestehennde Webseite zu aktualisieren.
(zumal in Part 1 auch in den ersten Säten etwas von "aktualisiert auf XCode 11
und Swift 5" steht. Aber ob das auf die Parts 2 & 3 zutrifft, wage ich zu
bezweifeln. Sonst hätttest du ja nicht solche Probleme!) Zumal sich dann auch
der Inhalt so ändert, das Leute (so wie ich), die mit einer älteren
XCode/Swift-Version arbeiten (müssen), dann dabei keine Hilfe mehr erhalten
können. Ein Dilemma, was sich nicht lösen läßt (ausser man baut das
Programm-Beispiel in parallelen Webseiten für je eine XCode/Swift-Version auf:
VIEL zu aufwendig!)

>> Normalerweise bietet Xcode die Möglichkeit an, den vorhandenen Code in eine
>> ihm (XCode!) zusagende Version umzubauen (Das ist aber auch nicht immer
>> erfolgreich, und dann hast du die gleichen Probleme wie vorher :-( )
>> Hast du das mal durchgeführt?
> Als ich das Projekt von der Seite geladen habe, hat Xcode gemeckert, daß es
> mit einer alten Version erstellt wurde und gefragt, ob es migrieren soll. Das
> habe ich zugelassen, das Programm hat kurz genuddelt und ähnliche Fehler wie
> in meinem Code angezeigt. Kompilieren läßt er sich aber auch nur nicht.
> Selbst
> wenn ich die Compiler-Sprache umstelle, geht es nicht. Bei Swift 4 schimpft
> er
> nicht, bei 5 dagegen schon. Trotzdem bleibt der Code fehlerhaft.
D.H. du kannst das Programm mit Swift 4 compilieren?
Dann solltest du einfach versuchen, auf der Ebene weiter zu arbeiten, um
vielleicht auf diesem Weg soviel Wissen zusammen zu tragen, das du später mal
(mit eben mehr Wissen) auf Swift 5 umschalten kannst.
Ist zwar keine akademische, aber eine praktische Lösung.

> Egal, ich finde mich damit ab, daß ich wohl nie auf einen grünen Zweig kommen
> werde.
Falscher Ansatz! :-) Mehr Mut zur Lücke und bitte mehr Durchhaltevermögen!

> Dies war jetzt mein vierter Anlauf, die Macprogrammierung zu erlernen.
> Irgendwie habe ich keine Motivation mehr, immer mittendrin abbrechen zu
> müssen, weil die Hilfen plötzlich meinen, einen mit einem halbfertigen
> Projekt
> stehenzulassen.
Ich will dich ja nicht kritisieren, aber Hypercard und Applescript sind (in
meinen Augen) nicht der richtige Ansatz, um "richtige" Mac-Programme zu
entwickeln (also bist du erst bei Versuch 2 :-) ). Wobei ich zugeben muss, das
ich mich mit Hypercard garnicht und mit Applescript nur wenig beschäftigt
habe. AppleScript hatte für mich eher den Eindruck einer
Commandline-Programmierung mit geringen Verfügbarkeiten einer UI (es gibt wohl
einige Dialogboxen, aber das wars dann auch). Aber wie gesagt, das ist mein
Eindruck aus wenigen Applescript-Versuchen (im Prinzip habe ich mich dort in
der gleichen Situation befunden, wie du jetzt!)

> Vielen Dank Dir für Deine Mühe,
Klar, gerne doch. Auch wenn es anscheinend nicht sehr erfolgreich war.
Aber wenn du noch Fragen hast, einfach hier rein schreiben! Vielleicht gibt es
ja doch noch eine Seele, die dir helfen kann. (vielleicht ja auch ich)

> Steffen

JD



Steffen Bendix

unread,
Feb 9, 2021, 6:30:35 PM2/9/21
to
On 9. Feb 2021 at 22:12:09 CET, "John Doe" <john...@myemail.invalid> wrote:

>
>> nutzen muß oder eine "guard"-Konstante anstatt einer einfachen. Dieser
>> Programmteil wirft übrigens die meisten Fehler aus.
> Und XCode gibt dir da keine Hilfen? (Wie gesagt, mein XCode ist älteren
> Datums, da gibt es viele Hilfen (die manchmal sogar weiterhelfen!))

Nein, leider nicht.

>
>> wenn ich die Compiler-Sprache umstelle, geht es nicht. Bei Swift 4 schimpft
>> er
>> nicht, bei 5 dagegen schon. Trotzdem bleibt der Code fehlerhaft.
> D.H. du kannst das Programm mit Swift 4 compilieren?

Ich habe das Beispielprojekt nochmal neu aus dem Netz geladen und geöffnet.
Xcode meckert, daß es mit Swift 3 erstellt wurde, ich aber eine ältere Version
von Xcode nehmen solle, um es auf Version 4 zu migrieren. Mit meiner neueren
Version geht das nicht, warum auch immer. Wenn ich die Swift Compiler Language
auf 4, 4.2, 5 oder unspecified stelle, beginnt die Kompilierung zwar, bricht
aber ab.

> Ich will dich ja nicht kritisieren, aber Hypercard und Applescript sind (in
> meinen Augen) nicht der richtige Ansatz, um "richtige" Mac-Programme zu
> entwickeln (also bist du erst bei Versuch 2 :-) ).

Man konnte mit HyperCard eigenständig lauffähige Programme erstellen und auch
mit AppleScript geht das in Grenzen. Es gibt immer noch SuperCard von
irgendeiner Firma, welches sogar für Windows kompiliert. Aber trotzdem sehen
die Programme (auf dem Mac) irgendwie nicht mehr zeitgemäß aus und man kann,
soviel ich mich erinnere, auch nicht auf die modernen Bedienelemente
zurückgreifen. Gut, für meine Zwecke würde es sicherlich immer noch genügen
und in HyperScript bin ich auch immer noch recht gut unterwegs, aber es wurmt
mich doch, daß ich es nicht mit Xcode hinkriege. Die Entwicklungsumgebung
gefällt mir nämlich sehr gut.

Und es ist doch mein vierter Anlauf. HyperCard und AppleScript habe ich nicht
dazugezählt.

Ich glaube aber, daß ich nun meinen Ansatz gefunden habe. Ich werde mich auf
SwiftUI konzentrieren. Ich habe bei YouTube ein deutschsprachiges Tutorial
gefunden, wo ein Typ in einer halben Stunde ein funktionierendes Interface
gebaut hat. Das habe ich gut nachvollziehen können und es funktioniert auch
bei mir ;-)

Was mich allerdings stört ist, daß ich mit SwiftUI trotzdem kein Macprogramm
erzeugen kann, weil es blöderweise MacOS 11 voraussetzt und ich meinen Rechner
nicht weiter als bis Catalina kriege. Och menno!

Steffen


Peter Köhlmann

unread,
Feb 9, 2021, 7:09:19 PM2/9/21
to
Am 10.02.21 um 00:30 schrieb Steffen Bendix:
> On 9. Feb 2021 at 22:12:09 CET, "John Doe" <john...@myemail.invalid> wrote:
>
>>
>>> nutzen muß oder eine "guard"-Konstante anstatt einer einfachen. Dieser
>>> Programmteil wirft übrigens die meisten Fehler aus.
>> Und XCode gibt dir da keine Hilfen? (Wie gesagt, mein XCode ist älteren
>> Datums, da gibt es viele Hilfen (die manchmal sogar weiterhelfen!))
>
> Nein, leider nicht.
>

XCode ist meiner Meinung nach Müll. Es ist EXTREM Mac-spezifisch und
lässt selbst erfahrene Programmierer von anderen Tools einfach erst
einmal im Regen stehen. Es ist zu nichts als sich selber kompatibel

>>> wenn ich die Compiler-Sprache umstelle, geht es nicht. Bei Swift 4 schimpft
>>> er
>>> nicht, bei 5 dagegen schon. Trotzdem bleibt der Code fehlerhaft.
>> D.H. du kannst das Programm mit Swift 4 compilieren?
>
> Ich habe das Beispielprojekt nochmal neu aus dem Netz geladen und geöffnet.
> Xcode meckert, daß es mit Swift 3 erstellt wurde, ich aber eine ältere Version
> von Xcode nehmen solle, um es auf Version 4 zu migrieren. Mit meiner neueren
> Version geht das nicht, warum auch immer. Wenn ich die Swift Compiler Language
> auf 4, 4.2, 5 oder unspecified stelle, beginnt die Kompilierung zwar, bricht
> aber ab.
>
>> Ich will dich ja nicht kritisieren, aber Hypercard und Applescript sind (in
>> meinen Augen) nicht der richtige Ansatz, um "richtige" Mac-Programme zu
>> entwickeln (also bist du erst bei Versuch 2 :-) ).
>

Wenn ich mir so ansehe, was du bisher gemacht hast und welche
Erwartungen du hast, dann würde ich eher sagen: Vergesse alles was Apple
bereitstellt. Einfach ignorieren. Besorge dir stattdessen Qt und baue
deine UIs mittels QtQuick.
Das hat dann sogar den Vorteil, dass du die Sachen nahtlos auf andere
Systeme übernehmen kannst.

Ich habe bis vor 2 Jahren ein ziemlich großes Projekt mit Qt (dann aber
mit C++ und mit Standard-Widgets) praktisch identisch auf MacOS, Windows
und Linux realisiert. Die Unterschiede im Source waren marginal (weniger
als 100 Zeilen bei rund 200.000 Zeilen Source-Code)

John Doe

unread,
Feb 12, 2021, 9:16:55 AM2/12/21
to
On 10.02.2021 at 00:30:34 MEZ, "Steffen Bendix"
<unbeliebte20...@yahoo.de> wrote:

Hi. Da wollte ich doch noch mal nachfragen:
> Ich glaube aber, daß ich nun meinen Ansatz gefunden habe. Ich werde mich auf
> SwiftUI konzentrieren. Ich habe bei YouTube ein deutschsprachiges Tutorial
> gefunden, wo ein Typ in einer halben Stunde ein funktionierendes Interface
> gebaut hat. Das habe ich gut nachvollziehen können und es funktioniert auch
> bei mir ;-)
D.h. du kannst das compilieren? Oder ist das nur im Playground ausführbar?
(Geht das überhaupt? Ich habe noch nie Playground genutzt, kann also auf keine
Erfahrung mit komplexen Programmen innerhalb des Playground zurückgreifen)

> Was mich allerdings stört ist, daß ich mit SwiftUI trotzdem kein Macprogramm
> erzeugen kann, weil es blöderweise MacOS 11 voraussetzt und ich meinen
> Rechner
> nicht weiter als bis Catalina kriege. Och menno!
Das habe ich jetzt nicht verstanden. Du kannst es zwar compilieren, aber nicht
in eine App zwingen? Du kannst unter Targets (so es das in deinem XCode noch
gibt) das Deployment Target nicht auf kleiner als 11.xx stellen? Was hat sich
Apple nur wieder dabei gedacht?

Da bleiben dir halt nur 2 Möglichkeiten: Neuen Rechner kaufen oder komplett
aufgeben. Wobei für mich die 2te Variante die deutlich schlechtere ist, aber
die Erste halt mit einem deutlich finanziellem Aufwand verbunden wäre (was
sich halt nicht jeder leisten kann/will)

Ich wünsch dir viel Erfolg, egal auf welchem Weg...

JD


Steffen Bendix

unread,
Feb 13, 2021, 5:59:04 AM2/13/21
to
On 12. Feb 2021 at 15:16:55 CET, "John Doe" <john...@myemail.invalid> wrote:

> Das habe ich jetzt nicht verstanden. Du kannst es zwar compilieren, aber
> nicht
> in eine App zwingen? Du kannst unter Targets (so es das in deinem XCode noch
> gibt) das Deployment Target nicht auf kleiner als 11.xx stellen? Was hat sich
> Apple nur wieder dabei gedacht?

Wenn ich unter Catalina mit SwiftUI für den Mac was machen will, kommt der
Fehler "OSStatus error -10825". Es läßt sich nicht mal die Echtzeitvorschau
des Projekts laden. Beim Kompilieren wird angezeigt, daß einige Programmteile
nur ab MacOS 11 verfügbar sind. Warum das so ist, verstehe ich nicht, denn
schließlich laufen die Apple Programme "Podcasts" und "Sprachmemos" auch unter
Catalina und sind eigentlich portierte iOS-Programme.

Steffen


0 new messages