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

Swift 使用核心数据查找重复条目,swift,core-data,Swift,Core Data,我正在使用核心数据在登录/注册表单中查找重复的用户名。这是我的密码: let context = managedObjectContext let entity = NSEntityDescription.entity(forEntityName: "MyEntityName", in: managedObjectContext) let request = NSFetchRequest<NSFetchRequestResult>() request.entity = entity

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

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
}
let context=managedObjectContext
让entity=NSEntityDescription.entity(在:managedObjectContext中的forEntityName:“MyEntityName”)
let request=NSFetchRequest()
request.entity=实体
var Fetcherror:错误?
var mutableFetchResults=try?managedObjectContext.fetch(请求)
//如果mutableFetchResults==nil{
//打印(“错误”)
// }
如果mutableFetchResults?.contains(其中:usernamefield.text){
打印(“副本”)
返回
}否则{
//添加用户
}
但是,我在第一个if语句中遇到以下错误:

无法将“字符串”类型的值转换为预期的参数类型“(任意)抛出->布尔”


你能帮帮我吗?提前感谢

mutableFetchResults
结果数组不包含
字符串
,而是
用户
类型。和
usernamefield.text
类型为
String
。这就是为什么您不能使用
包含您使用它的方式。
首先尝试将
mutableFetchResults
映射到
String
类型的数组

if let mutableFetchResults = mutableFetchResults {
     let stringArray = mutableFetchResults.flatMap { $0.username }
     if stringArray.contains(where: usernamefield.text) {
         print("duplicates")
         return
     }
}
username
是您要检查的
User
类上的
String
属性

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

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
}
let context=managedObjectContext
let请求:NSFetchRequest=User.fetchRequest()
var fetchError:错误?
var mutableFetchResults=try?managedObjectContext.fetch(请求)
//如果mutableFetchResults==nil{
//打印(“错误”)
// }
如果让mutableFetchResults=mutableFetchResults{
让stringArray=mutableFetchResults.flatMap{$0.username}
如果stringArray.contains(其中:usernamefield.text){
打印(“副本”)
返回
}否则{
//添加用户
}

谢谢!但是什么是someStringProperty?@dreamcode我调整了我的答案来解释
someStringProperty
给出了另一个错误:“Any”类型的值没有成员“username”,这是我想要的属性check@dreamcode请尝试我的更新代码,并将您的
用户
类别代码添加到您的问题中,而不是添加到我的答案中持续性错误:无法将“String”类型的值转换为预期的参数类型(String?)throws->Bool'您也可以在问题中发布您的
MyEntityName
类吗?