• ú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)
    QUITE
    QUITE --- ---
    NUCLID:

    <plist version="1.0">
    <array>
    <dict>
    <key>firstName</key>
    <false/>
    <key>adresa</key>
    <string>http://www.seznam.cz</string>
    <key>trvani</key>
    <string>20 sec</string>
    </dict>
    </array>
    </plist>
    NUCLID
    NUCLID --- ---
    QUITE: muzes poslat ukazku toho plistu?
    QUITE
    QUITE --- ---
    NUCLID: dělá to totéž, s 0 to píše (null), s 1 to padne
    NUCLID
    NUCLID --- ---
    QUITE: Tohle taky nechodi?

    usedBOOL = [[[contactsFile objectAtIndex:0] objectForKey:@"firstName"] isEqual:@"1"];
    QUITE
    QUITE --- ---
    NUCLID: ne-e ,) firstName tam zůstalo z doby kdy jsem ten .plist poprvé rozjel a nahrál do něj sample data (to byl string), teď je ten key nastavený na bool a jsou tam jenom jedničky a nuly (checkboxy). ..a když jsem to zkoušel načítat jako NSString, psalo to sice 1 a 0 ale podmínkou to neprošlo (viz níž).
    NUCLID
    NUCLID --- ---
    QUITE: Jenom ze zvedavosti: opravdu mas pod klicem "firstName" ulozenej BOOL? Neni chyba v tom, ze se snazis delat BOOL z krestniho jmena?
    QUITE
    QUITE --- ---
    NUCLID: nic. jediný k čemu jsem došel je následující: když to načítam takhle:

    usedBOOL = [[contactsFile objectAtIndex:0] boolForKey:@"firstName"];

    Tak to padá jenom když je bool YES, když je NO, tak to vypíše že usedBOOL je (NULL) ale jede to dál.. Ale co to může znamenat nechápu..

    A když to rozložim tak to padá u boolValue... A console u toho taky nic nepíše...
    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
    Kliknutím sem můžete změnit nastavení reklam