• ú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)
    KUBBING
    KUBBING --- ---
    Tak jsem odfaxoval svoje udaje o karte primo applu, poprve jsem pouzil fax. Dam vedet jak dlouho to trvalo, nez se mi aktivovali deve ucet ;)
    NUCLID
    NUCLID --- ---
    Slysel jsem, ze JetBraini na tom uz makaj. Tak jim drzme palce...

    Asi si koupim velkej monitor, na 13" displeji a touchpadu to nejak neni ono :)
    VIRUS31
    VIRUS31 --- ---
    SHAGA: visual studio je taky luxusni, mnohaleta zkusenost skrz ruzne verze.. xcode bohuzel pokulhava.
    SHAGA
    SHAGA --- ---
    NUCLID: Javovský nástroje jsou v tomhle ohledu naprostej luxus a máloco na ně má. (disclaimer: vůbec neznám visual studio). Taky dycky pláču, když musím někam jinam něco jinýho.
    NUCLID
    NUCLID --- ---
    Je to trapeni delat v XCode :) Dneska jsem celej den psal unit testy a bez nativni podpory pokryti, s mizernejma moznostma refactoringu a bez moznosti (aspon nevim jak) debugovani unit testu je to peknej vopich. S IntelliJ Idea se to fakt neda srovnat. Produktivita je uplne nekde jinde. Jestli JetBrains nekdy vydaj Ideu pro ObjectiveC, tak to bude asi nejvetsi revoluce ve vyvoji pro Maca.
    NUCLID
    NUCLID --- ---
    Nevite nekdo, jestli je mozny pustit v XCode jen nejakou sadu unit testu, aniz by se spustila cela testovana aplikace? V Jave to tak bezne delam. Napisu si tridu a k ni test a pracuju nezavisle na zbytku aplikace.
    QUITE
    QUITE --- ---
    KUBBING: uvažuju o Mac dev programu ale takhle daleko jsem se zatim nedostal.

    Apropos, nemáte někdo zkušenost s "uploadem" na apple.com/downloads ? Dal jsem tam dvě aplikace ale ani jedna neprošla..a bez vysvětlení..ty podmínky toho co se tam může vkládat jsem imho celkem splnil. ,))
    NUCLID
    NUCLID --- ---
    Hodil jsem na web prvni verejnou verzi TV Junkie, tak kdo ma zajem, stahujte na http://tvjunkie.proof.cz
    Je to muj prvni projekt v Objective-C / Cocoa, takze urcite je co doladovat, ale televizni program to ukazuje :)

    KUBBING
    KUBBING --- ---
    Ahoj, chci se zeptat ;). Jde vam zaplatit normalne kartou iPhone deve program ($99)? Me to pise, ze v CR neni Apple online store a mam udaje o karte faxovat do Applu. Diky
    QUITE
    QUITE --- ---
    NUCLID: omg.. on to fakt byl ten NSLog... :// to jsem netušil že může udělat takovej binec. Teď už to běží perfektně.
    Díky moc!!
    NUCLID
    NUCLID --- ---
    QUITE: Pridal jsem si jeste do plistu lastName s hodnotou true.
    Problem v tvem pripade byl nejspis ten, ze ses snazil vypisovat hodnotu v NSLog pomoci %@ ne? To na BOOL nefunguje. Bud ho vypises jako char, nebo to udelej jako ja. Kazdopadne normalne ti ted budou fungovat testy if (firstName)...
    NUCLID
    NUCLID --- ---
    QUITE:
    #import <Foundation/Foundation.h>
    
    int main (int argc, const char * argv[]) {
        NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
    
        NSString *filePath = @"quite.plist";
    	
        if ([[NSFileManager defaultManager] fileExistsAtPath:filePath]) {
    		NSArray *array = [[NSArray alloc] initWithContentsOfFile:filePath];
    		NSDictionary *dict = [array objectAtIndex:0];
    		
    		NSNumber *firstName = [dict objectForKey:@"firstName"];
    		NSNumber *lastName = [dict objectForKey:@"lastName"];
    
    		BOOL first = [firstName boolValue];
    		BOOL last = [lastName boolValue];
    		
    		NSLog(@"firstName = %@", first ? @"true" : @"false");
    		NSLog(@"lastName = %@", last ? @"true" : @"false");
    				
    		[array release];
        } else {
    		NSLog(@"%@ not found at %@", filePath, [[NSFileManager defaultManager] currentDirectoryPath]);
    	}
    	
        [pool drain];
        return 0;
    }
    


    Running…
    2010-01-28 19:34:38.955 PList[7633:a0f] firstName = false
    2010-01-28 19:34:38.958 PList[7633:a0f] lastName = true
    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"]
    Kliknutím sem můžete změnit nastavení reklam