获取Core-Data会导致重复项目

时间:2017-07-18 17:17:32

标签: swift core-data

在使用iOS的{​​{1}} Xcode8项目中,我正在执行Swift的{​​{1}}:

fetch

但是我的Core-Data是搜索结果的func searchFoods() { let context: NSManagedObjectContext = appDel.managedObjectContext let request = NSFetchRequest<NSFetchRequestResult>(entityName: "Foods") print("Searching Database for \(searchVariable)...") var subPredicates : [NSPredicate] = [] let codeSearch = NSPredicate(format: "codeText contains[c] %@", "\(searchVariable)") subPredicates.append(codeSearch) request.predicate = NSCompoundPredicate(orPredicateWithSubpredicates: subPredicates) request.returnsObjectsAsFaults = false do { let results = try context.fetch(request) if results.count > 0 { for result in results as! [NSManagedObject] { if let item = result.value(forKey: "title") as? String { // Maybe put a loop of some kind to only append the found item count?? searchArray.append(item) myTableView.reloadData() } } } } catch { print("Fetch failed...") } } 创建了许多我知道不存在的重复项;它列出了2到3次。无法弄清楚如何限制附加到结果计数量。如果我搜索水果,它可能会返回searchArray之类的[String]等重复。有人可以帮忙吗?

1 个答案:

答案 0 :(得分:0)

代码中没有任何内容会导致获取结果中出现重复内容。如果它们实际上不存在于持久性商店中,可能的原因是您正在执行此操作:

                searchArray.append(item)

但是没有迹象表明过去的结果。您的示例结果与此一致 - 如果有四个结果,您将它们添加到数组一次,然后再添加它们。

您的表格视图数据源方法也存在问题,但您可能直接从searchArray的内容中推送出来。