2011-01-01 12 views
18

Mam kilka CGPoints z CCTMXLayer Chcę zapisać do NSUserDefaults, ale nie może wydawać się elegancki sposób to zrobić.Zapisz listę punktów CG za pomocą NSUserDefaults

Pierwotnie miałem nadzieję zapisać NSDictionary z NSMutableSet dla wartości zawierającej kilka NSValues ​​(valueWithCGPoint). Z tego co wiem, ani NSMutableSet, ani NSValue nie są obsługiwane przez NSUserDefaults.

W tym momencie rozważam zapisanie wartości X CGPoint jako ciągu i po prostu przekształcenie go w tę iz powrotem w razie potrzeby.

+0

Czy rozważałeś użycie tylko NSKeyedArchiver do pliku? (Zamiast używać NSUserDefaults.) –

Odpowiedz

46

Istnieje kilka funkcji NSStringFromCGPoint i CGPointFromString. Możesz ich użyć do utworzenia tablicy ciągów reprezentujących punkty do serializacji, a następnie przekonwertować ponownie, gdy skończysz.

+0

Godne uwagi! Nie miałem pojęcia, że ​​te funkcje istnieją. Zawsze odkrywanie nowych aspektów obiektywnych c. –

1

Umieść je w obiektach NSValue. Gdy już tam będą, możesz zapisać na dysku NSValues (ponieważ są one zgodne z <NSCoding>) lub umieścić je w NSUserDefaults lub czymkolwiek innym.

+0

To jest dokładnie mój problem. Próbuję przechowywać NSArray (lub NSSet ... próbowałem obu) NSValues ​​przy użyciu NSUserDefaults, ale nadal otrzymuję błąd: [NSUserDefaults setObject: forKey:]: Próba wstawienia wartości nie właściwościami –

+0

Listy właściwości nie używać . Obiekty NSValue nie mogą być zapisywane w plikach. –

+0

Oh duh, przepraszam. Tak, będziesz musiał użyć 'NSKeyedArchiver' by przekonwertować' NSValues' na 'NSDatas' (lub' NSArray' na 'NSData') –

Powiązane problemy