Jak mogę stwierdzić, czy obiekt NSManagedObject jest trwały?Jak stwierdzić, czy obiekt NSManagedObject został zapisany?
(w przeciwieństwie do nowego obiektu, który nie został Beed jeszcze zapisany lub zostało usunięte.)
Jak mogę stwierdzić, czy obiekt NSManagedObject jest trwały?Jak stwierdzić, czy obiekt NSManagedObject został zapisany?
(w przeciwieństwie do nowego obiektu, który nie został Beed jeszcze zapisany lub zostało usunięte.)
sprawdzić, czy jej przedmiot id jest trwała
BOOL isSaved = !object.objectID.isTemporaryID;
dokumentację o isTemporaryID:
„TAK jeśli odbiornik jest tymczasowy, w przeciwnym razie NIE Większość identyfikatorów obiektów zwraca NO Nowe obiekty wstawione do kontekstu obiektu zarządzanego otrzymują tymczasowy identyfikator, który zostaje zastąpiony stałym po zapisaniu obiektu w magazynie trwałym. "
Odpowiedź Daij-Djana działa tylko w systemie iOS 8.0+. Dla starszych wersji użyć:
BOOL isSaved = nil != object.objectID.persistentStore;
Nie. Używam go na niższe oss –
Hmm, dziwne ... "Dostępne w iOS 8.0 i późniejszych" (dokumentacja). – kpower
Błąd dokumentacji na pewno –
Wydaje się, że w szybkich trzeba użyć '.temporaryID' zamiast' .isTemporaryID' –
Tak, nieruchomość jest 'temporaryID', ale getter jest ustawiony zwyczaju' isTemporaryID' - tak Objective-C nazywa to jako '[object.objectId isTemporaryID]' – kpower
Ale afaik, możliwe jest uzyskanie stałego ID obiektu, który nie jest jeszcze utrzymywany, popraw mnie, jeśli się mylę. Doprowadziłoby to do tego, że odpowiedź nie była deterministyczna:/ –