У меня есть база данных CoreData SQLLite с сущностью, у которой есть строковое свойство 'userId'. Это свойство уникально. Однако мне как-то удалось получить одну сущность с userId == '9' и другую userId == '9 \ u {01}'. И если я запрашиваю userId == 9, я иногда получаю второй.
Справочная информация. UserId изначально имеет целочисленное значение, но у меня есть веские основания для хранения в виде строки.
Я думаю, что проблема могла возникнуть из-за того, что я сохранял userId, используя "\ (userId) вместо String (userId). Но я не уверен.
Я не могу понять, почему я иногда получаю правильный, а иногда "9 \ u {01}". Я проверил, что предикат всегда читает "userId == 9". Я также проверил, что количество возвращаемых объектов всегда равно 1, я никогда не получаю обратно оба объекта.
Любая помощь / идеи будут наиболее ценными.
let fetchRequest: NSFetchRequest<NSFetchRequestResult> = NSFetchRequest(entityName: "EntityName")
fetchRequest.predicate = NSPredicate(format: "%K == %@", "userId", userId)
coreDataStack.context.perform { [weak self] in
guard let strongSelf = self else {
completion(nil)
return
}
do {
if let savedObjects = try strongSelf.coreDataStack.context.fetch(fetchRequest) as? [T] {
completion(savedObjects)
}
else {
completion(nil)
}
}
catch let readError {
Print("Failed to read Database: \(String(describing: readError))")
}
}