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