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

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

    Cytuj | #1

    Witam,

    mam nastepujacy problem z ktorym mecze sie od kilku dni bez znalezienie rozwiazania.
    Chce zrobic cos na wzor terminarza. TableView wyswietlac mi bedzie wpisy zgrupowane datami.
    Np. Wypisze dzien a pod nim grupe wierszy z wpisami odpowiadajacymi temu dniowi a potem kolejny dzien i kolejne wiersze odpowiadajace znowu kolejnemu dniu.

    Problem tkwi w tym ze wiekszosc tutoriali i poradnikow jakie znajduje bierze gotowa plist i przepisuje ja do NSDictionary
    z ktorego pomoca potem bardzo latwo zrobic reszte. Niemam pojecia jak dodac wpisy do NSDictionary tak by potem mozna je bylo wykorzystac tak jak potrzebuje.

    Moze jestescie mnie wstanie na cos nakierowac ? Albo czy jest inny sposob aby niekorzystac z NSDictionary?
    Dodam, ze wszystkie dane wczytuje z pliku XML i bardzo ladnie mi sie parsuja. Bez problemu moge je upchnac do tabeli jako liste ale nie jako oddzielne grupy.


  2. aLP
    Mężczyzna aLP jest offline
    Avatar aLP
    Dołączył
    Jun 2010
    Skąd
    52.229797,21.011781
    Postów
    83

    Cytuj | #2

    Wklej kod to może ktoś pomoże...


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

    Cytuj | #3

    Kod:
    - (void)viewDidLoad {
    	[super viewDidLoad];
    	
    	if ([Licznik count] == 0) {
    		NSString * path = @"http://dymex.pl/kalendarz2.xml";
    		[self parseXMLFileAtURL:path];
    	}
    	
    	for(int x=0; x < (Licznik); x++)
    	{
    			if([[[ObjectContainer getInstance] valueForKey:[NSString stringWithFormat:@"pacjent-d-%i", x]] isEqualToString:[[ObjectContainer getInstance] valueForKey:[NSString stringWithFormat:@"pacjent-d-%i", (x+1)]]])
    			{
    				
    			}
    			else 
    			{
    				NSDictionary *dict;
    				dict = [NSDictionary dictionaryWithObjectsAndKeys:
    						[[ObjectContainer getInstance] valueForKey:[NSString stringWithFormat:@"pacjent-%i", x]], 
    						[[ObjectContainer getInstance] valueForKey:[NSString stringWithFormat:@"pacjent-%i", (x-1)]], 
    						nil];
    				[NazwaPacjenta addObject: dict forKey:[[ObjectContainer getInstance] valueForKey:[NSString stringWithFormat:@"pacjent-d-%i", x]]];
    			}
    
    	}
    	
    	NSArray *array = [[NazwaPacjenta allKeys] sortedArrayUsingSelector:@selector(compare:)];
    	self.DataWizyty = array;
    	NSLog(@"Liczba pacjentow w danym dniu: %i", [NazwaPacjenta count]);
    }
    Ogolnie cala reszte kodu mam rozwiazana, potrzebuje tylko umiescic w NSDictionary imie i nazwisko pacjenta kliniki
    Kod:
    [[ObjectContainer getInstance] valueForKey:[NSString stringWithFormat:@"pacjent-%i", (x-1)]]
    Powyzszy kod zwraca imie i nazwisko pacjenta.
    A ponizszy zwraca date wizyty.
    Kod:
    [[ObjectContainer getInstance] valueForKey:[NSString stringWithFormat:@"pacjent-d-%i", (x-1)]]
    I wszystko ladnie dziala tylko po wykonaniu kodu ktory mialby zapisywac do NSDictionary jest ona ciagle pusta.
    Np. zliczenie wpisow w NSDictionary zwraca 0 counts ....
    podejrzewam ze zle zapisuje, jakies sugestie ?


  4. Dołączył
    Aug 2010
    Skąd
    Warszawa, Polska
    Postów
    46

    Cytuj | #4

    Ojej, co za obrzydliwy kod

    Jakiego typu jest NazwaPacjenta? NSDictionary, czy NSMutableDictionary? Jak to pierwsze, to zmień.

    Po drugie - w którym miejscu sprawdzasz, czy NSDictionary jest puste?

    Powinieneś tuż po przypisaniu do dict (czyli dict=...) dać:
    NSLog(@"%d", [dict count]);
    Czy w tym miejscu count zwraca 0?

    Jeśli tak, to bardzo dziwna sprawa, bo przypisanie jest dosyć prostą sprawą. Sprawdź dla pewności co przypisujesz, tj. wypisz sobie owe:

    Do tego pytanie, co zwraca:

    Kod:
    [[ObjectContainer getInstance] valueForKey:[NSString stringWithFormat:@"pacjent-%i", x]], 
    						[[ObjectContainer getInstance] valueForKey:[NSString stringWithFormat:@"pacjent-%i", (x-1)]],
    i do tego pytanie, co zwraca:

    Kod:
    [[ObjectContainer getInstance] valueForKey:[NSString stringWithFormat:@"pacjent-%i", x]], 
    						[[ObjectContainer getInstance] valueForKey:[NSString stringWithFormat:@"pacjent-%i", (x-1)]],
    Na koniec, just in case, co oznacza ta linijka?

    Kod:
    ([[[ObjectContainer getInstance] valueForKey:[NSString stringWithFormat:@"pacjent-d-%i", x]] isEqualToString:[[ObjectContainer getInstance] valueForKey:[NSString stringWithFormat:@"pacjent-d-%i", (x+1)]]])
    Dwie uwagi na koniec:
    NazwaPacjenta - instancje obiektów nazywa się z małej litery, czyli powinieneś był dać nazwaPacjenta (za to nazwy klas daje się z dużej). Nie zmienia to działania programu, ale zwiększa znacząco czytelność.

    Po drugie - XML jest passe - gdyby webservice zwracało wyniki w JSONie, to miałbyś dużo łatwiejszą pracę (jedna funkcja zamieniłaby Ci wszystkie wyniki na NSDictionary).
    WWW: http://www.motivapps.com/dev-tools/
    Tomasz Kolinko
    Motivapps, iOS marketing Toolbox:
    http://www.motivapps.com/dev-tools/


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

    Cytuj | #5

    kolinko dzieki za podpowiedzi.

    Sugerujesz zrezygnowac z XML'a ?
    Ogolnie to chcialem zrobic cos na wzor kalendarza pacjentow odwiedzajacych gabinet lekarski.
    Myslalem o wykorzystaniu XML'a poniewaz wszystkie dane umiescilbym w kilku plikach na jakims lokalnym serwerze w sieci lan co wsumie
    poczesci zabezpieczaloby mi dostep do tych danych przez osoby z zewnatrz.

    Gdzies natrafilem na sugestie na temat stworzenia jakiegos webservicesu ale nigdy tego nierobilem i jestem dosc zielony w tym temacie.
    Moze podrzucisz mi jeszcze jakies sugestie z tym webserivcem i JSON'em.

    Rozumiem ze WebSerivces dziala w ten sposob ze wykorzystuje zwracanie wynikow przeszukiwania jakiejs bazy danych (np. sql'owej) w formacie JSON bezposrednio do urzadzenia korzystajac z http post i get ?

    Dobrze rozumuje czy nie ?

    Natomiast JSON odpowiada za skomunikowanie sie


  6. Dołączył
    Aug 2010
    Skąd
    Warszawa, Polska
    Postów
    46

    Cytuj | #6

    @hrddd - poczytaj o JSON - wszyscy (dzięki Bogu) przesiadają się teraz na ten format, bo jest dużo łatwiejszy do parsowania. W każdym języku masz bardzo fajne moduły do obsługi. JSON ma te same zalety co XML, ale nie ma jego wad. I generalnie wszystko diała tak samo (czyli też przez POST/GET się komunikujesz), tylko poprostu parsowanie jest łatwiejsze.
    WWW: http://www.motivapps.com/dev-tools/
    Tomasz Kolinko
    Motivapps, iOS marketing Toolbox:
    http://www.motivapps.com/dev-tools/

Odpowiedz na ten temat