我正在创建一个新闻应用,您可以在其中选择要查看的主题。我遇到的问题是你取消选择主题。所有选定的主题都将添加到ArticleSource
属性下名为source
的实体中的CoreData中。当我尝试使用字符串Results
在名为title
的数组中找到主题时,会发生错误。由于我不知道数组中主题的位置,我尝试使用产生错误的index(of: )
方法找到它:Cannot invoke index with an argument list of type '(of: Any)'
任何帮助表示感谢。
do {
let appDelegate = UIApplication.shared.delegate as! AppDelegate
let context = appDelegate.persistentContainer.viewContext
let request = NSFetchRequest<NSFetchRequestResult>(entityName: "ArticleSource")
request.returnsObjectsAsFaults = false
var results = try context.fetch(request)
if results.count > 0 {
for result in results as! [NSManagedObject] {
if let source = result.value(forKey: "source") as? String {
if source == title {
print("it matches")
if let index = results.index(of: title) {
results.remove(at: index)
}
}
print("results = \(results)")
}
}
}
} catch {
print("error")
}
do {
let appDelegate = UIApplication.shared.delegate as! AppDelegate
let context = appDelegate.persistentContainer.viewContext
try context.save()
print("SAVED")
} catch {
// error
}
答案 0 :(得分:1)
无需循环结果来获取索引。你可以试试这个。
var results = context.fetch(request)
if let index = results.index(where: { (result) -> Bool in
result.value(forKey: "source") == title
})
{
results.remove(at: index)
}
答案 1 :(得分:1)
Cannot invoke index with an argument list of type '(of: X)
是因为X
类型不符合Equatable
答案 2 :(得分:1)