Pracuję nad aplikacją, w której użytkownik może rysować na ekranie palcem. Używam do tego UibezierPath. Muszę utrzymywać te dane, które są NSArray zawierające wiele obiektów BezierPath. Jaki jest najlepszy sposób na zrobienie tego? Przechowywać w coredatach, przechowywać w pliku przy użyciu NSData? Bardzo zobowiązany.Trwałość UIBezierPath z podstawowymi danymi
Odpowiedz
Czy spodziewasz się, że będziesz musiał przechowywać wiele obiektów? Czy będziesz mieć możliwość pobrania ich na podstawie jakiegoś filtra lub zamówienia? Zalecam użycie Core Data, aby zaoszczędzić sobie przyzwoitą ilość pracy przy pakowaniu/rozpakowywaniu danych. Nie ma powodu, aby przechowywać go w pliku.
edit:
Jako druga odpowiedź powiedział, po prostu zarchiwizować go do NSData. Klasa UIBezierPath przylega do protokołu NSCoding więc można zrobić coś takiego, żeby go zarchiwizować:
NSData *bezierData = [NSKeyedArchiver archivedDataWithRootObject:bezierPath];
Można utrzymywać, że obiekt NSData w danych Core.
zdekodować archiwum, zakładając, że mamy bezierData
NSData obiektu, można zrobić coś takiego:
UIBezierPath *bezierPath = [NSKeyedUnarchiver unarchiveObjectWithData:bezierData];
archiwum UIBezierPath do NSData i zapisać go jako atrybut typu NSData w CoreData. Możesz mieć łatwiejszy interfejs API, jeśli przekształcisz go w atrybut umożliwiający przekształcenie.
Jest to dość łatwe do zrobienia, zwłaszcza w przypadku zajęć, które obsługują już archiwizację.
Zobacz ten dokument, aby uzyskać więcej informacji.
Jak utrzymasz UibesierPath w coredata? –
aktualizuję moją odpowiedź. – Dima