czasami podczas hakowania potrzebny jest faktyczny int klucza podstawowego. oto jak można to złapać:
NSManagedObjectID *yourManagedObjectID = [yourManagedObject objectID];
int yourManagedObject_PK = [[[[[yourManagedObjectID URIRepresentation] absoluteString] lastPathComponent] substringFromIndex:1] intValue];
pomimo tego, że CoreData jest grafem obiektowym, jeśli spojrzy się na dane bazy danych SQLite wygenerowane przez CoreData, ten sposób przechwycenia klucza podstawowego NSManagedObject nie powinien stanowić problemu. ii użyłem CoreData i niskopoziomowej biblioteki sqlite3 C razem w tym samym kodzie, a przekazywanie kluczy podstawowych z CoreData do sqlite3 w celu pobrania rekordów działa dobrze.
! Jeśli zamierzasz używać tego kodu w środowisku produkcyjnym, pamiętaj o możliwych zmianach wewnętrznych w sposobie, w jaki klucz podstawowy db przekształca się w prezentację URIR, może to spowodować uszkodzenie Twojego kodu.
cieszyć się