听起来您真正想要的是将字符串属性的默认值设为空字符串。在大多数情况下,您可以在 Core Data 模型编辑器中为属性设置默认值。每当您创建新的托管对象时,该值都会自动分配给该属性。但是编辑器不支持使用空字符串作为默认值,所以你不能在那里做。
不过,您可以在运行时将默认值设为空字符串。数据模型是可编辑的,直到您开始使用它们。因此,在您创建模型对象之后立即执行此操作是一个好地方。以下将为数据模型中的每个字符串属性分配一个空字符串作为默认值:
- (NSManagedObjectModel *)managedObjectModel
{
if (_managedObjectModel != nil) {
return _managedObjectModel;
}
NSURL *modelURL = [[NSBundle mainBundle] URLForResource:@"MyModel" withExtension:@"momd"];
_managedObjectModel = [[[NSManagedObjectModel alloc] initWithContentsOfURL:modelURL] mutableCopy];
NSEntityDescription *entityDescription = [_managedObjectModel entitiesByName][@"Entity"];
for (NSString *attributeName in [entityDescription attributesByName]) {
NSAttributeDescription *attributeDesc = [entityDescription attributesByName][attributeName];
if ([attributeDesc attributeType] == NSStringAttributeType) {
[attributeDesc setDefaultValue:@""];
}
}
return _managedObjectModel;
}
使用这个或类似的东西,当您创建新实例时,模型中的每个字符串属性都将自动为空字符串。如果您不想对每个字符串属性都执行此操作,请编辑代码以添加对实体和/或属性名称的一些额外检查。