Właśnie zauważyłem, że klucz, który istnieje w moim **NSUserDefaults**
powraca dość często. Wygląda na to, że jest o połowę krótszy, a druga połowa jest nieprawidłowa. Mówię to za połowę czasu, ale nie oznacza to, że jego flip-flopowanie, to tylko 40-50%, to nie działa. Po zapisaniu wartości początkowej natychmiast wywoływana jest synchronizacja. Używam tego klucza jako aplikacji, którą ustawiam, gdy nowy użytkownik zarejestruje się.NSUserDefaults objectForKey czasem zero
Poniższe powraca kod nil:
#define kDBrevision @"revision"
NSString *rev = [[NSUserDefaults standardUserDefaults] objectForKey:kDBrevision];
Kiedy uruchomić aplikację i po prostu monitorować wartość (bez pisanie żadnych NSUserDefaults), wartość czasami jest ważny bez modyfikacji do NSUserDefaults na wszystkich.
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
NSString *r = [[NSUserDefaults standardUserDefaults] objectForKey:kDBrevision];
NSLog(@"revision %@", r);
_exit(1);
Nie mam pojęcia, dlaczego tak się dzieje. Im działa iOS 10 na moim urządzeniu podłączonym do Xcode 8.2.1. Ktoś ma jakieś pomysły? Dzięki
EDIT: zacząłem rozmawiać z jabłkiem o ustalenie to i okazało się, że jeśli masz plik pełna ochrona włączona, może być przyczyną tego problemu pojawiać się od czasu do czasu, jednak jabłko powiedział mnie, że mój konkretny przypadek (który jest jedynym, którego byłem pewien w tym momencie) jest błędem. Sprawa ma miejsce, gdy używasz Xcode do uruchomienia aplikacji na urządzeniu, które powinno być nie może się nie udać, a czasami się zdarza. Nie mam pojęcia, kiedy i czy zostanie naprawiony. Zamiast tego przestawiłem moje ciągi krytyczne z domyślnych na zamiast tego na pęku kluczy.
Prawdopodobnie trzeba sprawdzić, czy zapisać zerowa wartość do swojego 'NSUserDefault', nie ma to jak połowa prawidłowe połowa czasu źle w kodzie, jego na kodzie tylko – Tj3n
Czy pominąłeś [[NSUserDefaults standardUserDefaults] zsynchronizował] podczas ustawiania? – KSR
Sprawdziłem, że nie piszę nic. I tak, kiedy piszę nową wartość, nazywam syncrhonize. – Tim