Ios Swift3错误:键入';NSFastEnumerationIterator.Element';(aka';Any';)不符合协议';任何对象';
因此,我试图将我的待办事项列表应用程序更新为swift 3/iOS 10,但在更新时遇到了此错误。我查了一下互联网和StackOverflow,发现其他人也有这个问题,但那里的解决方案对我没有帮助。 这只是一个文件,负责插入核心数据 这是该文件的代码:Ios Swift3错误:键入';NSFastEnumerationIterator.Element';(aka';Any';)不符合协议';任何对象';,ios,swift,xcode,swift3,anyobject,Ios,Swift,Xcode,Swift3,Anyobject,因此,我试图将我的待办事项列表应用程序更新为swift 3/iOS 10,但在更新时遇到了此错误。我查了一下互联网和StackOverflow,发现其他人也有这个问题,但那里的解决方案对我没有帮助。 这只是一个文件,负责插入核心数据 这是该文件的代码: import UIKit import CoreData var taskMgr: TaskManager = TaskManager() struct task { var name = "not defined" var
import UIKit
import CoreData
var taskMgr: TaskManager = TaskManager()
struct task {
var name = "not defined"
var desc = "not defined"
}
class TaskManager: NSObject {
var tasks = [task]()
var persistenceHelper: PersistenceHelper = PersistenceHelper()
override init(){
let tempTasks:NSArray = persistenceHelper.list(entity: "Task")
for res:AnyObject in tempTasks{
tasks.append(task(name:res.valueForKey("name")as! String,desc:res.valueForKey("desc") as! String))
}
}
func addTask(name:String, desc: String){
var dicTask: Dictionary<String, String> = Dictionary<String,String>()
dicTask["name"] = name
dicTask["desc"] = desc
if(persistenceHelper.save(entity: "Task", parameters: dicTask)){
tasks.append(task(name: name, desc: desc))
}
}
func removeTask(index:Int){
let value:String = tasks[index].name
if(persistenceHelper.remove(entity: "Task", key: "name", value: value)){
tasks.remove(at: index)
}
}
}
导入UIKit
导入CoreData
var taskMgr:TaskManager=TaskManager()
结构任务{
var name=“未定义”
var desc=“未定义”
}
类TaskManager:NSObject{
var tasks=[task]()
var persistenceHelper:persistenceHelper=persistenceHelper()
重写init(){
让我们来看看:NSArray=persistenceHelper.list(实体:“任务”)
对于res:testasks中的AnyObject{
tasks.append(任务(名称:res.valueForKey(“name”)as!String,desc:res.valueForKey(“desc”)as!String))
}
}
func addTask(名称:String,说明:String){
var dicTask:Dictionary=Dictionary()
dicTask[“name”]=名称
口述任务[“描述”]=描述
if(persistenceHelper.save(实体:“任务”,参数:dicTask)){
tasks.append(任务(名称:name,描述:desc))
}
}
func removeTask(索引:Int){
let值:String=tasks[index].name
if(persistenceHelper.remove(实体:“任务”,键:“名称”,值:值)){
任务。删除(位于:索引)
}
}
}
所以它在第18行给出了一个错误,如下所示:
类型“NSFastEnumerationIterator.Element”(也称为“Any”)不符合协议“AnyObject”
有人能帮我吗?
谢谢:)请像这样更新第18行。我希望这对你有用
for res:AnyObject in tempTasks as [AnyObject]
请像这样更新第18行。我希望这对你有用
for res:AnyObject in tempTasks as [AnyObject]
像这样强制
NSArray
是非常罕见的,而且这样强制AnyObject
的可能性更小。首先删除这些类型,让系统为您执行类型推断。如果您仍然有问题,请将其简化为MCVE()。在您编写问题时,它包含大量无关代码(addTask、removeTask),并且缺少关键代码(persistenceHelper.list的定义)。@RobNapier it's just give's的许多其他错误,如“没有‘值’候选项生成预期的上下文结果类型‘字符串’”。您知道如何修复它吗?如上所述,请简化为MCVE以便我们提供帮助。感谢您告诉我们,尽管您的链接不起作用:/Thanky无论如何,您这样强制NSArray
是非常罕见的,更不可能这样强制任何对象。首先删除这些类型,让系统为您执行类型推断。如果您仍然有问题,请将其简化为MCVE()。在您编写问题时,它包含大量无关代码(addTask、removeTask),并且缺少关键代码(persistenceHelper.list的定义)。@RobNapier it's just give's的许多其他错误,如“没有‘值’候选项生成预期的上下文结果类型‘字符串’”。你知道如何修复它吗?如上所述,请减少到MCVE,以便我们可以提供帮助。感谢告诉我们,尽管你的链接不起作用:/无论如何,谢谢