我想通过编码(没有gui-Swift3)在核心数据中创建和删除实体,是否可能?
答案 0 :(得分:1)
您可以在运行时和实例中创建实体,尽管它非常不寻常并且有一些潜在的问题需要注意。
首先,您可以创建NSEntityDescription
的实例来创建新实体。使用NSAttributeDescription
和NSRelationshipDescription
的实例来完成新实体。通过修改entities
上的NSManagedObjectModel
属性,将新实体添加到托管对象模型。
尝试此操作之前需要了解的事项:
NSPersistentContainer
,因为它隐藏了太多细节。您必须使用较旧(但仍受支持)的方法,您可以编写自己的代码来加载模型,然后使用addPersistentStore(ofType:configurationName:at:options:)
加载持久性存储文件。答案 1 :(得分:0)
您可以创建和删除实体的记录,但不能创建和删除实体本身。
无法在运行时更改模型。
答案 2 :(得分:0)
我认为您无法创建/删除实体,因为模型不会在运行时更改。您可以创建 / 更新 / 删除 / 从实体中选择记录。
答案 3 :(得分:0)
保存或删除coredata中对象的三个功能:
- (BOOL)deleteObjectFromDB:(NSManagedObject *)object eSalva:(BOOL)andSave {
if (!object) {
NSLog(@"DB Error");
return NO;
}
[_managedObjectContext deleteObject:object];
if (andSave)
return [self saveDB];
return YES;
}
- (BOOL)saveDB {
BOOL result;
result = [_managedObjectContext save:nil];
if (!result)
NSLog(@"DB Error: database saving error");
return result;
}
删除所有对象
- (void)deleteAllObjects:(NSString *)entityDescription {
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription entityForName:entityDescription inManagedObjectContext:_managedObjectContext];
[fetchRequest setEntity:entity];
NSError *error;
NSArray *items = [_managedObjectContext executeFetchRequest:fetchRequest error:&error];
[fetchRequest release];
for (NSManagedObject *managedObject in items) {
[_managedObjectContext deleteObject:managedObject];
DLog(@"%@ object deleted",entityDescription);
}
if (![_managedObjectContext save:&error]) {
DLog(@"Error deleting %@ - error:%@",entityDescription,error);
}
}
回到你的问题:
希望它有所帮助。