• úvod
  • témata
  • události
  • tržiště
  • diskuze
  • nástěnka
  • přihlásit
    registrace
    ztracené heslo?
    F_OFRProgramovani pro OSX (IDE Xcode, Cocoa, Objektive-C, AppleScript)
    Vyvoj aplikaci pro OSX pomoci IDE Xcode s vyuzitim nativniho frameworku Cocoa a jazyku Objektive-C. Pred par dny vyslo SDK pro iPhone, debata o vyvoji pro iPhone vitana! Kazda rada nad zlato!
    rozbalit záhlaví
    NUCLID
    NUCLID --- ---
    QUITE: Vis na cem presne to padne? Zkus ten radek rozebrat a udelej si pomocne promenne... jakoze vysledek objectAtIndex si uloz, pak nad tim zavolej objectForKey a pak boolValue. V debuggeru pak snadno zjistis, co se mu nelibi.
    QUITE
    QUITE --- ---
    QUITE: ostatní sloupce fungujou bezchybně (za předpokladu že jsou NSString)
    QUITE
    QUITE --- ---
    NUCLID: jj, tohle řešení jsem zkoušel.. ve tvaru:

    usedBool = [[[contactsFile objectAtIndex:jsmeNaRadkuDat] objectForKey:@"firstName"] boolValue];

    (zkoušel jsem usedBool jako BOOL i jako int)

    Problém je, že to celý na tomhle řádku bez jediný hlášky nebo chyby v Console.app padne.. Dokonce i když je ten .plist prázdnej, spustim, pomocí NSTableView (NSArrayController) tam něco nahraju. V momentě kdy nahraju data, dojdu na řádek, konec.
    NUCLID
    NUCLID --- ---
    QUITE: Property list je textovej soubor, kterej si nenese informaci o datovym typu. V Objective-C je BOOL definovanej jako unsigned char a stejne dobre ti poslouzi treba integer. Takze kdyz z plistu ctes hodnotu, musis vedet, jakej datovej typ to je - v tomhle pripade BOOL - a prevest ji na ten typ:

    BOOL checkBox = [[plistDictionary objectForKey:@"CheckBox"] boolValue];
    QUITE
    QUITE --- ---
    NUCLID: ještě jednu věc, v jednom sloupci mi NSArrayController do .plistu ukládá hodnotu checkboxu jako BOOL. když jí pak načtu jako string, nepomůže ani isEqual. Je otázka jestli nějak nutit NSArrayController ukládat to jako string a nebo jestli ten string pak nějak převádět na bool...každopádně pomocí objectAtIndex: a objectForKey: je možný načítat data jenom do stringu... Takže jsem zase v p... Nějakej nápad? ,)
    VIRUS31
    VIRUS31 --- ---
    Absence multitaskingu me (zatim) nijak nevadi. A chapu politiku applu udrzet vykon pri behu aplikace tim, ze jsou ostatni sestrelene. Vezmu-li v potaz mobilni windows, kde se vsechno kouse, omezeni multitaskingu mi prijde jako dobrej krok. Ale o tom uz probehlo x debat, takze bych to nechal jak je.

    Idealni by bylo mit na iPad samotny Xcode, aby se dalo prgat mobilne bez potreby mit meka na kolenou. Ale to asi nehrozi :)
    NUCLID
    NUCLID --- ---
    QUITE: Kdyz porovnavas stringy jako [myString == @"neco"], tak problem je v tom, ze konstrukce @"neco" vytvori novou instanci NSString a operator == porovnava adresy v pameti. Je mu jedno, ze stringy jsou stejne, pro nej to jsou dva objekty na jinych adresach a tudiz nejsou shodne.

    Jinak if() imho testuje nenulovost argumentu, takze by ti melo stacit if ([durationString isEqual:@"5 sec"]), ale to je jen kosmetika.
    QUITE
    QUITE --- ---
    NUCLID: ty jsi chyytreej! ,) Je to tak! : if ([durationString isEqual:@"5 sec"] == YES) ..lalala. Díky!

    Co se týče iPadu, mě zklamalo že to nemá regulerní OS X.. A to asi nejvíc.. Jinak je to pěknej kousek, hudba budoucnosti. ,)
    NUCLID
    NUCLID --- ---
    VIRUS31: Presne, je to jen hracka a reader na vikendy.
    Mrzi me, ze nema plnohodnotnej OS s multitaskingem a ze je vazanej na AppStore. Ale je to logickej tah od Apple, jinak by se prestaly prodavat MacBooky. Chtel bych vyzkouset, jak se na tom bude cist v posteli, protoze na to je notebook nepouzitelnej. A jestli bude knizka stat kolem $5, tak se iPad pomalu vyplati jen jako eBook reader. Normalne knizky stoji od $20 vys, takze po 30 knizkach se zaplati :)
    VIRUS31
    VIRUS31 --- ---
    QUITE: Ja jsem nadsenej, v podstate je to platforma, na kterou jsem cekal. Ani velke, ani male, centralizovany appstore, vydrz. Minimalne jako hracku a ebook reader na vikendy ho beru :)
    NUCLID
    NUCLID --- ---
    QUITE: zkus ty stringy porovnat [durationString isEqual:@"5 sec"]
    QUITE
    QUITE --- ---
    Apropos, řešim zvláštní problém. Sice tu vedu spíše monology ale třeba mi tentokrát někdo poradí. ,)

    Kód:

    durationString = [[contactsFile objectAtIndex:jsmeNaRadkuDat] objectForKey:@"trvani"];

    NSLog( @"durationString: %@", durationString );



    if (durationString == @"5 sec") {
    NSLog( @"realne trvani 5 SEC" );
    [self setAnimationTimeInterval:5];
    }


    Takže od začátku: Načtu do NSStringu (durationString) nějaký řetězec, ten si vypíšu NSLogem - tam je obsah proměnné "5 sec" a pak to má vjet do tý podmínky ale to se nestane. Nechápu. Možná jsem přehlíd nějakou pitomost. Že by operator? ,)) Spíš si ale říkam jestli nemůže být něco s tim stringem...kódování nebo tak...
    MATESISKO
    MATESISKO --- ---
    no, mozna jsem plasil zbytecne, preference pane stejne nejde resiznout. v tomhle bude asi problem. kazdopadne diky moc za pomoc
    NUCLID
    NUCLID --- ---
    MATESISKO: Ne, Library je okno, kde jsou vsechny dostupne GUI tridy. Mam na mysli okno s instancema pro tvuj projekt v interface builderu.

    Kdyz si tam v hierarchii najdes to tableview, bude vnoreny ve scrollview a to zase v nejakym jinym view. Tak si na kazdy klikni a v inspectoru zkontroluj, ze ma ten prvek nastavenej resizing.

    Udelal jsem ti screenshot:
    MATESISKO
    MATESISKO --- ---
    NUCLID: proklikat se mi nedaří. okno s objektama je library? pokud ano, v které záložce bych našel seznam všech objektů v okně? díky
    NUCLID
    NUCLID --- ---
    MATESISKO: Klikej na tableview tak dlouho, dokud se ti v inspektoru neukaze, ze mas vybrane to custom view. Nebo si v okne s objektava vyber hierarchicky zobrazeni, najdi si tam to view a pak mu v inspektoru nastav resizing.
    MATESISKO
    MATESISKO --- ---
    zdravim, začínám s cocoa a hned jsem narazil na menší problém. vytvářím si svůj preference pane, do okna si v interface builderu naházím verticálně rozdělený custom view, do jednoho z oken tohoto view pak table view. mám ale problém s autosizinge. table view se autosizuje tak jak chci, když chýbu se spliterem, ale pokud začnu měnit velikost celého okna, celý custom view automaticky velikosto nemění. čím by to mohlo být?
    QUITE
    QUITE --- ---
    QUITE: vypadá to že je to tak. ale nikde neni ani řádka o použití CoreData v settings screensaveru. Nicméně už jenom fakt že screensaver nemá podporu cokoliv ukládat do Application Support mluví proti mému záměru. ,( Zkusil jsem z dlouhé chvíle i vytvořit základní Core Data app a celou jí po kouskách přeskládat do toho screensaveru a nepomohlo to... Stejně tak jako změny v applicationSupportDirectory.
    QUITE
    QUITE --- ---
    NUCLID: neni zatim moc co fotit...prostě do IB do NSPanelu hodim Core Data Entity, propojim s modelem a ty tlačítka add a remove jsou furt disabled..ať dělam co dělam, nedaří se mi je zaktivovat a nahrát tam nějaký data.. A nepíše to ani chybu ani warning... A google nic..
    NUCLID
    NUCLID --- ---
    QUITE: netusim... mas uz nejakej screenshot?
    NUCLID
    NUCLID --- ---
    MAGE: Premejslim jestli by ten cas v seznamu nerusil - jestli by tam uz nebylo moc textovejch informaci. Proto jsem uvazoval o tom kulatym progress indicatoru. S tim je teda trochu potiz, protoze se musi vykreslovat na offscreen okno a pak renderovat, ale to se da.

    Ikonky ke kanalum dam a uvidime, jak to bude vypadat. Jinak vyhledavani v kanalech uz chodi a je to parada. Case insensitive a automaticky to ignoruje diakritiku, coz je skvely. Tohle bych v Jave psal celej den, tady je to na 2 minuty :)
    MAGE
    MAGE --- ---
    NUCLID: Neznaj 212 ikonek (kdo by koukal na 212 kanalu?), ale znas presne tolik ikonek na kolik TV se divaji. Pro cechy cca 30 stanic. Jinak urcite bych dal ten cas od kdy do kdy uz do toho seznamu.
    Kliknutím sem můžete změnit nastavení reklam