ios - 如何使用核心数据在数据库中仅添加单个值?

标签 ios objective-c core-data

我正在尝试将唯一值 添加到我的sqlite 数据库中。

我试图在 .xcdatamodeld 中创建唯一属性,但我没有成功。

这部分代码添加了表F016Terminaison中的所有terminaison。如何只添加唯一的终止值

for (NSString *terminaison in [[verbe objectForKey:temps] objectForKey:@"terminaison"])
{
    F016Terminaison *newTerminaison = [NSEntityDescription insertNewObjectForEntityForName:@"F016Terminaison" inManagedObjectContext:self.managedObjectContext];
    newTerminaison.name = terminaison;               
}

最佳答案

每次调用 insertNewObjectForEntityForName 都会创建一个新对象并将其插入到 托管对象上下文。

如果您只想要唯一值,则必须首先检查是否有具有该值的对象 已经存在。这是通过带有谓词的 NSFetchRequest 完成的

[NSPredicate predicateWithFormat:@"name == %@", terminaison];

如果你必须插入很多值,那么获取所有对象会更有效 首先来自新列表的值,而不是许多获取请求。

比较 "Implementing Find-or-Create Efficiently"在《核心数据编程指南》中。

关于ios - 如何使用核心数据在数据库中仅添加单个值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17658987/

相关文章:

encryption - NSFileProtectionComplete 不加密核心数据文件

ios - 是否使用 Core Data?

iphone - CoreData 无法保存上下文,表示关系为零 - 但它肯定已设置

iphone - 如何在核心图形中删除线

iOS,JSON 检查值是否为 false 或字符串

ios - devicesWithMediaType 已弃用

ios - 不能在我的 ios 以外的 facebook 墙上发帖

iphone - 从 MainViewController 传递和保存 Flip ViewController 之间的设置

ios - NSDate 谓词抛出 'Unable to parse the format string' 错误

objective-c - 如何本地化 settings.bundle 中的第二个 plist 文件?