2008-12-18 17 views
5

Miałem bezpośrednie podejście do przekształcania par klucz/wartość fragmentu XML w NSDictionary po uruchomieniu prostej aplikacji na iPhone'a. Problem polega na tym, że muszę włączyć te instancje NSDictionary, które kiedyś zapełniły moje UITableView do niestandardowych klas, ponieważ wymagają zachowania i dodatkowej złożoności. Problem polega na tym, że teraz, aby utworzyć instancję obiektu i wypełnić jego zmienne instancji parami klucz/wartość z usługi sieciowej, staje się to o wiele trudniejsze. Nie mogę już wrzucać go do metody, która iteruje przez XML i używa KVC do ustawienia zmiennych instancji.Kodowanie wartości klucza

Jakie inne rozwiązanie jest dostępne?

Odpowiedz

8

Nadal można używać metod kodowania wartości klucza w klasie niestandardowej, o ile nazwa zmiennych jest odpowiednia, nie ma tam żadnej różnicy. Mając to na uwadze, kiedy pracuję z XMLem, zwykle kończę testowanie nazwy każdego węzła lub tworzenie tabeli wyszukiwania kluczy, ponieważ nazwy w źródle danych, z którymi pracuję, nie są zgodne z kodowaniem kluczem wartości. Jeśli masz kontrolę nad źródłem danych, możesz po prostu kontynuować korzystanie z setValue:forKey:.

Polecam lekturę this guide o kodowaniu wartości klucza, jeśli jeszcze tego nie zrobiłeś. Ma fundamentalne znaczenie dla wielu wspaniałych narzędzi w kakao.

+0

To brzmi nieźle, Marc. Czy istnieje możliwość wyjaśnienia, co masz na myśli, że nazwy w źródle danych nie są zgodne z kluczowymi/wartościowymi kodami? A do czego testujesz swoje węzły? – Coocoo4Cocoa

+0

Kapitalizacja odgrywa część, ale nazwy węzłów nie zawsze są zgodne z nazwą zmiennej. Na przykład, DetailPageURL może odwzorować na pageURL, tytuł na tytuł i tak dalej. –

1

Sprawdź w NSCoding. Możesz użyć protokołu NSCoding, aby zapisać obiekt, właściwości i wszystko, jako dane.

Gdy twój obiekt jest zgodny z NSCoding, możesz po prostu zarchiwizować całą tablicę obiektów przy użyciu NSKeyedArchiver.

Należy pamiętać, że w przypadku dużej liczby obiektów może to znacząco wpłynąć na wydajność aplikacji na iPhone podczas ładowania i zapisywania.

+0

NSCoding wygląda świetnie, sierpień. Obawiam się jednak, że kara za wyniki za korzystanie z niego. Moje obiekty zazwyczaj zawierają 5/6 zmiennych instancji, podstawowe typy danych. Zastanawiam się, ile zajęłoby mi tankowanie mojej aplikacji. – Coocoo4Cocoa

+0

Pracuje jednak z usługą XML, nie pytając, jak utrwalić swoje obiekty do źródła danych. –

+0

Wpływa pozytywnie lub negatywnie? –

Powiązane problemy