2014-09-26 11 views

Odpowiedz

24

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. "

+2

Wydaje się, że w szybkich trzeba użyć '.temporaryID' zamiast' .isTemporaryID' –

+0

Tak, nieruchomość jest 'temporaryID', ale getter jest ustawiony zwyczaju' isTemporaryID' - tak Objective-C nazywa to jako '[object.objectId isTemporaryID]' – kpower

+0

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:/ –

4

Odpowiedź Daij-Djana działa tylko w systemie iOS 8.0+. Dla starszych wersji użyć:

BOOL isSaved = nil != object.objectID.persistentStore; 
+0

Nie. Używam go na niższe oss –

+0

Hmm, dziwne ... "Dostępne w iOS 8.0 i późniejszych" (dokumentacja). – kpower

+0

Błąd dokumentacji na pewno –