Odpowiedz na ten temat
Pokaż wyniki od 1 do 10 z 10

  1. Dołączył
    Jul 2007
    Postów
    70

    Cytuj | #1

    Witam,

    mam nastepujacy problem z NSDicionary. Tworze cos na wzor kalendarza, ktory zapisuje do NSDicionary.
    Calosc wyglada w ten sposob:

    Kod:
    (
            {
            "\U015aroda 17.05.2011" =         (
                "9:00 Kowalski Jan",
                "10:00 Malinowski Piotr",
                "10:30 Goter Aleksa",
                "14:00 Kowalski Jan"
            );
        },
            {
            "\U015aroda 17.05.2011" =         (
                "8:00 Jordanowski Olek",
                "10:30 Ester Karolina",
                "14:30 Misiorek Krzysiek"
            );
        }
    )
    I teraz mam problem bo chce zrobic w TableView sekcje. Kazda sekcja to osobny dzien z wierszami zawierajacymi godzine i dane osoby umowionej.

    Do stworzenia sekcji potrzebuje wywolac funkcje, ktora zwroci mi tabele z dniami ktore sa w NSDictionary.
    Posluzy mi to potem do dodania tytulow dla kazdej z sekcji.
    Wywoluje cos takiego:
    Kod:
    NSArray *array = [[NazwaPacjenta allKeys] sortedArrayUsingSelector:@selector(compare:)];
    gdzie array to jest moja nowa tablica zawierajaca tylko dni. Natomiast NazwaPacjenta to moj
    NSDictionary ktorego zawartosc wyswietlilem powyzej.

    Nierozumiem skad mam ten ponizszy blad:
    Kod:
    -[__NSArrayM allKeys]: unrecognized selector sent to instance 0x4e03da0
    2011-06-14 18:35:50.773 App1[15306:207] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[__NSArrayM allKeys]: unrecognized selector sent to instance 0x4e03da0'
    Kombinuje na przerozne sposoby i niemoge wymyslec co jest nie tak.


  2. Avatar wojtkow SM? Tylko S...


    Dołączył
    May 2007
    Skąd
    Poznań
    Postów
    3,620

    Cytuj | #2

    A jak masz zdefiniowaną metodę compare?
    Komputer: MBA 11.6" i7 1.8GHz 4GB RAM 256GB SSD, iMac 27" i7 2.8GHz 8GB RAM 240 GB SSD + 1 TB HDD
    Telefon: iPhone 4
    Odtwarzacz: iPhone 4
    Tablet: iPad (2012) 4G, iPad WiFi
    Moje programy w AppStore:
    iOS => Project Planner | Project Planner HD
    OSX => Project Planner Viewer
    Zgodnie z regulaminem nie udzielam porad poprzez PW - masz pytanie, pytaj na forum.


  3. Dołączył
    Feb 2010
    Postów
    222

    Cytuj | #3

    Korzystając z @selector(jakaś_metoda: ) program się skompiluje nawet gdy
    -(jakiś_typ) jakaś_metoda: (jakiś_typ) parametr;
    nie została zdefiniowana w obiekcie z którego wywołujesz NSArray. Co więcej Xcode nawet nie daje ostrzeżenia, choć można go jakoś ustawić by wskazywał błędy tego typu.

    Selektory w obj-C to bardzo przydatna rzecz, choć działająca dość pokrętnie
    Moje aplikacje w AppStore:
    Blicks.


  4. Dołączył
    Jul 2007
    Postów
    70

    Cytuj | #4

    ok, rozumiem, czyli musze zdefiniowac wczesniej metode
    compare.

    No ale mam w takim razie inne pytanie, bo zmienilem ta metode na taka:

    Kod:
    NSArray *array = [NazwaPacjenta allKeys];
    Wedlug mnie powinna zwrocic wszystkie klucze czyli wlasnie dni i zapisac ja w tabeli.
    Ale dostaje ciagle errora

    Kod:
    -[__NSArrayM allKeys]: unrecognized selector sent to instance
    Ostatnio edytowane przez hrddd ; 14.06.2011 o 19:05


  5. Dołączył
    Feb 2010
    Postów
    222

    Cytuj | #5

    Czym jest NazwaPacjenta? Zgodnie z konwencja z wielkiej litery nazywa się obiekty, a z małej ich instancje.
    Podaj definicje NazwaPacjenta, to coś się poradzi. Poza tym mam wrażenie, ze nie za bardzo rozumiesz skladnie obj-C, a jest to język dość zawiły, a najgorsze wnim jest to, ze wiele błędów potrafi od czasu do czasu dawać oczekiwane przez programistę rezultaty, co jest jedną z najgorszych rzeczy do debugowania.
    Moje aplikacje w AppStore:
    Blicks.


  6. Dołączył
    Jul 2007
    Postów
    70

    Cytuj | #6

    wiem o tym, tzn. niedawno sie dowiedzialem zeby instancje z malej litery nazywac, w nowym projekcie bede juz uzywal tego prawidlowo.

    jesli chodzi o NazwePacjenta to deklaruje to jako:

    Kod:
    NSMutableArray *NazwaPacjenta;
    Wiem ze popelniam jeszcze sporo bledow, ale calu czas sie ucze. Do tej pory pisalem wylacznie w C# i teraz proboje sie przesiasc na OBJ-C.

    Ogolnie to staram sie uczyc tego jezyka w ten sposob, iz zakladam sobie jakis projekt/program do napisania i za wszelka cene proboje go napisac. Wydaje mi sie ze najlepiej uczyc sie w praktyce nowego jezyka.

  7. JKK
    Mężczyzna JKK jest offline
    Avatar JKK
    Dołączył
    Jan 2008
    Skąd
    Osolin
    Postów
    400

    Cytuj | #7

    Już się pogubiłem... To co jest u Ciebie NSDictionary? Bo allKeys działa na NSDictionary nie na NSMutableArray...
    Komputer: MacBook C2D 2,16GHz; iBook G3 600
    Telefon: iPhone 3GS 16GB White
    Tablet: iPad WiFi 32GB
    WWW: http://macwyznawca.pl/
    MacWyznawca i Apple Fanboy!
    Moje programy na iPhone i iPad'a | Na Mac OS: Faqt - Faktury na Mac OS.


  8. Dołączył
    Jul 2007
    Postów
    70

    Cytuj | #8

    Rzeczywiscie, jakos dziwinie mi to umklo. Pozmienialem na NSDictionary i teraz ladnie smiga.
    Tyle, ze w NSDictionary niedziala mi addObject. Dlatego wlasnie mialem ustawione na NSMutableArray.
    Niebardzo wiem jak dodawac kolejne wpisy do NSDictionary, bo korzystanie np. z dictionaryWithObject
    jest ok ale wtedy musze odrazu wszystko za jednym razem wpisac a czesc danych dochodzi mi dynamicznie.

    Czy jest w NSDictionary jakas funkcja ktora dzialalaby jak addObject ? Czy musze poprostu przepisywac cala tablice jeszcze raz dopisujac do niej nowy wpis ?


  9. Dołączył
    Apr 2011
    Postów
    66

    Cytuj | #9



  10. Dołączył
    Jul 2007
    Postów
    70

    Dzieki serdeczne NSMutableDictionary ma to wszystko czego potrzebowalem

Odpowiedz na ten temat