使用核心数据查找重复条目

时间:2018-02-18 14:00:14

标签: swift core-data

我正在使用核心数据在登录/注册表单中查找重复的用户名。这是我的代码:

let context = managedObjectContext

let entity = NSEntityDescription.entity(forEntityName: "MyEntityName", in: managedObjectContext)
let request = NSFetchRequest<NSFetchRequestResult>()
request.entity = entity

var Fetcherror: Error?
var mutableFetchResults = try? managedObjectContext.fetch(request)
// if mutableFetchResults == nil {
// print ("error")
// }

if mutableFetchResults?.contains(where: usernamefield.text){
    print("duplicates")
    return
} else {
// add the user
}

但是,我在第一个if语句中收到以下错误:

  

无法转换'String'类型的值?预期的参数类型'(Any)throws - &gt;布尔“

你能帮帮我吗?提前致谢

1 个答案:

答案 0 :(得分:0)

mutableFetchResults结果数组不包含StringUser类型。 usernamefield.text的类型为String。这就是为什么你不能以contains的方式使用它。 首先尝试将mutableFetchResults映射到String类型的数组。

if let mutableFetchResults = mutableFetchResults {
     let stringArray = mutableFetchResults.flatMap { $0.username }
     if stringArray.contains(where: usernamefield.text) {
         print("duplicates")
         return
     }
}

username是您要检查的String课程的User媒体资源。

您的完整代码应如下所示。

let context = managedObjectContext
let request: NSFetchRequest<User> = User.fetchRequest()

var fetchError: Error?
var mutableFetchResults = try? managedObjectContext.fetch(request)
// if mutableFetchResults == nil {
// print ("error")
// }

if let mutableFetchResults = mutableFetchResults {
   let stringArray = mutableFetchResults.flatMap { $0.username }
   if stringArray.contains(where: usernamefield.text) {
      print("duplicates")
      return
} else {
// add the user
}