将字符串与 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键值进行tableview单元格显示
在 NSFetchedResultsController 中使用 Predicate 与 CoreData 进行日期比较