将字符串与 CoreData 进行比较

Posted

技术标签:

【中文标题】将字符串与 CoreData 进行比较【英文标题】:Compare string with CoreData 【发布时间】:2015-04-26 19:01:44 【问题描述】:

我有一个字符串(例如“Test”),还有一些存储在 CoreData 中的字符串。现在我想检查 CoreData 中是否也存在字符串“Test”。因此,我只想将保存在 CoreData 中的所有字符串与字符串“Test”进行比较。

你们中有人知道如何在 Swift 中做到这一点吗?

【问题讨论】:

您是否阅读过 Core Data 编程指南中有关获取请求的内容? 所以你想获取所有匹配“测试”的字符串?如果是这样,请使用 NSpredicates!所以例如 fetchRequest.predicate = NSpredicate("NAME_OF_ATTRIBUTE = Test") 没错。我想检查是否有与“Test”匹配的字符串。如何在 if 语句中执行此操作(如果有一个字符串等于“测试我想运行一些代码”)? 【参考方案1】:

我不知道任何单行解决方案,但是您可以:

使用谓词获取 查看返回的数组是否为空(核心数据中不存在)或不(元素存在)。
var request : NSFetchRequest = NSFetchRequest(entityName: "Core_Data_Entity");
request.predicate = NSPredicate(format: "Property_name = %@", @"Test")
var results : [NSManagedObject] = context.executeFetchRequest(request, error: nil) as [Core_Data_Entity]
 if (results.count > 0) 
     //Element exists
 
 else 
     //Doesn't exist
 

【讨论】:

我收到以下错误:Could not find an overload for 'init' that accepts the supplied arguments 在这行代码var results : [NSManagedObject] = context.executeFetchRequest(request, error: nil) as [NSManagedObject] 中。这是我得到的唯一错误。感谢您的帮助! 应该是format: "(property_name = 'Test'")(format:"property_name = %@", "Test") @Mundi 啊,是的,我从来没有真正与硬编码的东西进行比较,所以我不知道:)

以上是关于将字符串与 CoreData 进行比较的主要内容,如果未能解决你的问题,请参考以下文章

从 CoreData 中获取比较和删除字符串

调用多个CoreData键值进行tableview单元格显示

在 NSFetchedResultsController 中使用 Predicate 与 CoreData 进行日期比较

如何将双引号字符串与字符进行比较?

将字符串与字符序列进行比较

将字符串与容差进行比较