Podczas zapisywania niewielkich ilości danych z poziomu mojej aplikacji lepiej jest użyć NSUserDefaults
lub NSCoding
? W tej chwili używam NSCoding
(encodeWithCoder/initWithCoder itp.), Ale wydaje się, że NSUserDefaults
może być prostsze. Moje pełne dane dotyczą różnych Ints/Strings/MutableArray, tylko około kilkudziesięciu razem.NSUserDefaults vs NSCoding
Odpowiedz
Zakładam, że przez NSCoding
masz na myśli "zapisywanie obiektów do plików po serializacji ich za pomocą interfejsów API NSCoding
". Chociaż oba podejścia są poprawne w przypadku prymitywnych typów danych, podejście NSUserDefaults
staje się trudniejsze po rozpoczęciu serializowania obiektów o złożonych strukturach.
W przeciwieństwie do tego zapisywanie danych klas NSCoding
do plików zapewnia wysoki stopień elastyczności pod względem struktury obiektu. Jeśli wiesz, że nie będziesz potrzebować tej elastyczności w przyszłości, przejdź pod numer NSUserDefaults
; jeśli nie jesteś pewien, pozostań przy plikach.
Tak, twoje założenie jest poprawne (moje pytanie powinno być wyraźniejsze). Będę trzymać się metody NSCoding/file, ponieważ już działa. Dzięki. – wayneh
To jest moje preferencje, aby użyć pliku plist programowo, który jest utworzony
NSString *appFile;
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
appFile = [documentsDirectory stringByAppendingPathComponent:@"myFile"];
//this creates the file path
NSDictionary* tempDict = [[NSDictionary alloc]initWithContentsOfFile:appFile];
//this gets the data from storage
[tempDict writeToFile:appFile atomically:YES];
//this updates the data to storage
- 1. Zmiana z NSUserDefaults na NSCoding
- 2. NSUserDefaults vs CFPreferences, co wziąć pod uwagę
- 3. Zapisywanie tablicy z NSCoding
- 4. Przechowywanie tokenów uwierzytelniania w systemie iOS - NSUserDefaults vs Keychain?
- 5. UIImage i NSCoding iOS 5.1
- 6. NSUserDefaults - Xamarin
- 7. Jak zabezpieczyć NSUserDefaults?
- 8. Przechowywanie danych do NSUserDefaults
- 9. Zapisywanie NSDictionary do NSUserDefaults
- 10. NSUserDefaults metoda synchronizacji
- 11. Swift NSUserDefaults setString: forKey :?
- 12. Problemy NSUserDefaults i KVO
- 13. Wykrywanie zmian w NSUserDefaults
- 14. NSUserDefaults objectForKey czasem zero
- 15. Jak używać protokołu NSCoding z wyliczeniem?
- 16. Jak przeprowadzić test NSCoding na urządzeniu?
- 17. Co to znaczy być zgodnym z NSCoding?
- 18. nie można ustawić NSUserDefaults pole
- 19. Jak zapisać UIColor z NSUserDefaults?
- 20. Jak często są synchronizowane NSUserDefaults?
- 21. Sprawdź, czy klucz NSUserDefaults istnieje
- 22. Android odpowiadający NSUserDefaults w iOS
- 23. Zastępowanie języków AppleLanguages w NSUserDefaults
- 24. Jak odczytać ciąg z NSUserDefaults
- 25. Który wzór do pakowania NSUserDefaults?
- 26. Swift NSUserDefaults nie zapisuje słownika?
- 27. Jak używać NSUserDefaults z AppDelegate
- 28. Zapisz struct w klasie do NSUserDefaults przy użyciu Swift
- 29. Otrzymałem nierozpoznany selektor -replacementObjectForKeyedArchiver: awarię podczas implementowania NSCoding w Swift
- 30. Dekodowanie z NSCoding: czy wartość istnieje dla klucza?
Ty porównywanie jabłek z pomarańczami. Możesz użyć NSCoding, aby zapisać coś w NSUserDefaults, więc jaki kontrast próbujesz narysować? – matt
Brzmi to, jak chcesz, "NSPropertyListSerialization". – iluvcapra
Aby dalej było matowo stwierdzone, NSCoding nie jest w ogóle mechanizmem zapisu. Co robisz z zakodowanymi danymi? To właśnie powinieneś porównać z użyciem NSUserDefaults. – rmaddy