Это как NSManagedObject создаетсяполучить последний добавленный NSManagedObject из CoreData
NSEntityDescription *entity = [NSEntityDescription entityForName:strEntityName inManagedObjectContext:managedObjContext];
NSManagedObject * managedObject = (NSManagedObject *)[[NSClassFromString(strEntityName) alloc] initWithEntity:entity insertIntoManagedObjectContext:managedObjContext];
//values are mapped into this object
Сохраним NSManagedObject в постоянное хранилище и загрузка в настоящее время вставленного объекта, как это:
NSError *error;
BOOL isDone = [managedObjectContext save:&error];
//BOOL isDone = [managedObjectContext obtainPermanentIDsForObjects:[NSArray arrayWithObjects:tempManagedObject, nil] error:&error];
if (isDone && error == nil){
//fetch last inserted object here
//make fetch request
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] initWithEntityName:strEntityName];
//make query using fetch request in context
NSError *error;
NSArray *arrFetchRequest = [managedObjectContext executeFetchRequest:fetchRequest error:&error];
if (arrFetchRequest.count>0){
//This is last inserted object
NSManagedObject *managedObject = [arrFetchRequest lastObject];
return managedObject;
}
}
Я также refered Swift - How to get last insert id in Core Data, store it in NSUserDefault and predicate. Но у него не будет постоянного идентификатора объекта в NSManagedObject, поскольку мы сохраняем временный идентификатор и извлекаем его, и у нас нет постоянного идентификатора.
Canyone делит любые другие варианты?
Есть много лучших вариантов. Этот запрос возвращает все объекты этого типа сущности, а не только последние вставленные. Самое простое - сохранить «objectID» и fetch с помощью этого. Обязательно вызывайте 'getPermanentIDsForObjects'. – Avi
@Avi: Используя 'getPermanentIDsForObjects', он не получит NSManagedObject с постоянным идентификатором. Также мне придется использовать метод [NSManagedObjectContext save] 'после этого, чтобы сохранить записи в базе данных. –
Подождите. Вы думаете, что метод, называемый 'getPermanentIDsForObjects' **, не будет ** получать постоянный' objectID 's? Объясните это, пожалуйста. – Avi