在使用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]
等重复。有人可以帮忙吗?
答案 0 :(得分:0)
代码中没有任何内容会导致获取结果中出现重复内容。如果它们实际上不存在于持久性商店中,可能的原因是您正在执行此操作:
searchArray.append(item)
但是没有迹象表明过去的结果。您的示例结果与此一致 - 如果有四个结果,您将它们添加到数组一次,然后再添加它们。
您的表格视图数据源方法也存在问题,但您可能直接从searchArray
的内容中推送出来。