Eine Helle wie sie sein muss. Ich weiß jetzt gar nicht was ich groß schreiben soll. Die Brauer aus Merkendorf haben da einen richtig leckeren Hopfen rangeholt und gut mit dem Malz abgeschmeckt. Beängstigend unprätentiös und genau das richtige für die Biergartensaison.
Franken Bräu – Weißbier
Schlossbrauerei Au-Hallertau – Schnee Bock
Von allem Guten viel. So kann man den schweren dunklen Bock zusammenfassen. Aber vielleicht bin ich nach einer halben Flasche auch nicht mehr im 100%igen Vollbesitz meiner geistigen Kräfte. Dafür wurden bis auf die letzte alle Geschmacksknospen bespielt mit blumigen Hopfennoten und kaffeeesken Dunkelmalzaromen. Ein Nachtischbier. Und danach mit einer angenehmen Bettschwere ins selbige.
Franken Bräu – Kellergold
Für ein Schwarzbier recht mild, milder als andere Schwarzbiere, wo das Farbmalz gerne mal den Geschmack vorgibt, trotzdem mit voller Malznote und dezenter Hopfigkeit. Leichte Belgienassoziationen kommen auf. Franken Bräu sollte sich mit Ähnlicher Malzmischung mal an ein dunkles Hefeweizen machen. Das würde ich unbesehen kaufen!
Die Flasche wurde von Matthias (auf ADN @msslovi0) gespendet. Danke!
Kohlenmühle – Moggerla
Obwohl schön aroma-hopfig ist das Moggerla süffig mit breiten Malz- und leichten Fruchtaromen in der Hinterhand. Ein sehr lecker Bömbli, das man nicht zu kalt trinken darf, damit die Aromen sich auch entfalten können. Der Hersteller weist extra drauf hin.
Vielen Dank an den MobileMacs Hörer, der uns das zugeschickt hat. Ich weiß leider Deinen Namen nicht. Wir hatten das in Folge 107 aus gutem Grund fast ganz vernichtet, aber ich konnte noch eine Flasche für einen entspannten Test aus’m Glas sicherstellen.
Ana Rilling, Röntgenbilder
Franken Bräu – Urhell
Der erste Schluck verrät sofort, da war jemand am Werk, der die Kunst des Ausbalancierens von Malz und Hopfen beherrscht. Und der weiß, wo man guten Hopfen herbekommt. Davon ist nämlich nicht zu knapp in der Flasche. Mir ist unklar warum die Minkwitzer Mitwitzer der Meinung sind das Urhell wäre „ein natürlich milder Genuss“. Ok, es ist kein IPA, aber mild würde ich es nicht nennen.
Die Flasche wurde von Matthias (auf ADN @msslovi0) in einem von zwei großen Paketen geschickt um mir seine Lieblingsbrauerei näher zu bringen. Mission accomplished!
Privatbrauerei Gessner – Heller Doppelbock
Wunderbare Malzaromen treffen auf nassen Hund, der durch eine Hopfenplantage gestromert ist. Mir ist ja völlig unklar, wie man im Land des Weltmarktführers in Sachen Hopfenanbau zu Hopfenextrakt greifen kann. Da hilft auch keine Brautradition bis ins Jahr 1622, liebe Herren (und Damen?) aus Sonneberg. Leistet Euch mal einen ordentlichen Hopfen und die Leute werden Euch die Bude einrennen! Versprochen!
Zwei Bugs im Workshop
Zwei Bugs haben sich in den Workshop eingeschlichen, die ich nicht so stehen lassen kann:
1.-[USVDetailViewController setNewEntry:]
wird nicht benutzt. (Ende von Video 11)
Danke für’s Aufspüren an Tobias Müller a.k.a @twam bei App Dot Net
Wir haben eine Methode -[USVDetailViewController setNewEntry:]
geschrieben, die ruft [self configureView]
auf und diese Methode lädt den Link des Entrys. -[USVDetailViewController setNewEntry:]
wird aber nie benutzt. Die Methode -[USVDetailViewController viewDidLoad]
ruft ebenfalls [self configureView]
auf, insofern wird beim Laden des Views auch der Link geladen. Beides ist ziemlich unschön:
-[USVDetailViewController setNewEntry:]
brauchen wir eigentlich nicht, weil wir den Link nicht ändern, während der WebView angezeigt wird. Also löschen wir die Methode, getreu nach dem Motto „less code is better code“.- Dass
[self configureView]
in-[USVDetailViewController viewDidLoad]
aufgerufen wird, ist aber auch nicht korrekt, weil der User ja zurück zur EntriesTableView gehen und ein anderes Entry auswählen könnte, ohne dass der WebView abgebaut wird. Momentan wird er abgebaut, aber verlassen kann man sich darauf nicht. Wer weiß, was Apple in iOS 7 tun wird. Der korrekte Ort für den Aufruf von[self configureView]
ist also-[USVDetailViewController viewWillAppear:]
. Das wird immer dann aufgerufen, wenn der WebView erscheint.
Die Änderungen:
[self configureView]
aus viewDidLoad rausnehmen:
- (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view, typically from a nib. self.webView.delegate = self; }
viewWillAppear:
hinzufügen:
- (void) viewWillAppear:(BOOL)animated { [self configureView]; }
-[USVDetailViewController setNewEntry:]
kann ganz weg.
2. Im WebView wird der falsches Detail-Link angezeigt (Ende von Video 14)
Danke für’s Aufspüren an Michael Schulz a.k.a @michas auf App Dot Net
In -[USVEntriesTableViewController prepareForSeque:sender:]
wird für das Anzeigen der Details das falsche Entry ausgewählt. Das kommt daher, dass -[UITableView indexPathForSelectedRow]
verwendet wird um die Row zu ermitteln. Wir haben aber gar keine Row ausgewählt, sondern den Detail Button getappt. Daher liefert der Aufruf von -[UITableView indexPathForSelectedRow]
nichts (nil
) zurück. Man kann bei Objectve C aber auf einem nil
-Pointer Methoden aufrufen ohne einen Crash zu bekommen. Diese Methodenaufrufe liefern dann immer nil
bzw. 0
zurück. Das heißt, dass aus dem entries.row
in der nächsten Zeile immer 0
herauskommt, und wir somit als Entry immer self.entries[0]
benutzen.
Wenn man einen Breakpoint an der Stelle setzt und es laufen lässt, sieht man recht schnell indexPath
ist 0
. Man sieht aber auch, dass sender
eine USVEntryCell
ist.
Die richtige Methode ist also -[UITableView indexPathForCell:]
, die wir mit sender
als Argument aufrufen, dann bekommen wir auch den korrekten NSIndexPath
.
Die korrigierte Methode lautet also:
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { if ([segue.identifier isEqualToString:@"PushToDetail"]) { NSIndexPath *indexPath = [self.tableView indexPathForCell:sender]; USVEntry *entry = self.entries[indexPath.row]; ((USVDetailViewController*)segue.destinationViewController).entry = entry; } else if ([segue.identifier isEqualToString:@"PushToMedia"]) { NSIndexPath *indexPath = [self.tableView indexPathForSelectedRow]; USVEntry *entry = self.entries[indexPath.row]; ((USVMediaViewController*)segue.destinationViewController).enclosureURL = entry.enclosureURL; } }
Sorry für die Fehler. Wer weitere findet, immer her damit!
iOS-Entwicklung für Quereinsteiger
Eine schöne Augustwoche lang saß ich mit Timo Hetzel in dessen Studio und habe einen Workshop zum Thema iOS für Quereinsteiger erbrütet. Jetzt ist er endlich im Kasten und kann in der Undsoversity bestaunt werden.
Ich empfinde den Workshop als recht vollständig und deshalb ist er auch fast 8 Stunden lang geworden, quasi: „einmal alles to go“. Was tatsächlich dabei ist beschreibt Timo aber viel besser als ich es könnte.
Auf jeden Fall sind wir beide stolz wie Bolle und ich kann den Workshop guten Gewissens jedem ans Herz legen, der „immer schon mal was für iOS machen wollte, aber …“
Diskussion gerne hier in den Kommentaren.