Swift:已更新并获得错误:“0”;无法调用'=';参数列表类型为..”;
在Xcode beta 5中一切都很好,但现在在成熟的Xcode中,我的应用程序代理中出现了两个类似的错误:Swift:已更新并获得错误:“0”;无法调用'=';参数列表类型为..”;,swift,xcode6,Swift,Xcode6,在Xcode beta 5中一切都很好,但现在在成熟的Xcode中,我的应用程序代理中出现了两个类似的错误: “无法使用类型为“(NSManagedObjectContext,NilliterAverable”)的参数列表调用“!=” “无法使用类型为“(NSPersistentStoreCoordinator,nilliterAverable”)的参数列表调用“!=” 我试着换了新的!=有!==我得到了一个不同的错误。我看不出有什么问题!=。 守则: func saveContext () {
“无法使用类型为“(NSManagedObjectContext,NilliterAverable”)的参数列表调用“!=”
“无法使用类型为“(NSPersistentStoreCoordinator,nilliterAverable”)的参数列表调用“!=”
func saveContext () {
var error: NSError? = nil
let managedObjectContext = self.managedObjectContext
if managedObjectContext != nil { //THIS LINE
if managedObjectContext.hasChanges && !managedObjectContext.save(&error) {
// Replace this implementation with code to handle the error appropriately.
// abort() causes the application to generate a crash log and terminate.
//println("Unresolved error \(error), \(error.userInfo)")
abort()
}
}
}
// #pragma mark - Core Data stack
// Returns the managed object context for the application.
// If the context doesn't already exist, it is created and bound to the persistent store coordinator for the application.
var managedObjectContext: NSManagedObjectContext {
if _managedObjectContext !== nil {
let coordinator = self.persistentStoreCoordinator
if coordinator != nil { //THIS LINE
_managedObjectContext = NSManagedObjectContext()
_managedObjectContext!.persistentStoreCoordinator = coordinator
}
}
return _managedObjectContext!
}
var _managedObjectContext: NSManagedObjectContext? = nil
我有一个新错误:“'NSManagedObjectContext'没有名为'hasChanges'的成员”
在此代码中:
func saveContext () {
var error: NSError? = nil
let managedObjectContext = self.managedObjectContext
if managedObjectContext != nil {
if managedObjectContext.hasChanges && !managedObjectContext.save(&error) { //This line
// Replace this implementation with code to handle the error appropriately.
// abort() causes the application to generate a crash log and terminate.
//println("Unresolved error \(error), \(error.userInfo)")
abort()
}
}
}
self.managedObjectContext
在这里被键入为NSManagedObjectContext
,而不是NSManagedObjectContext?
您无法将var与nil进行比较,除非其类型为
可选
、实现可均衡
、或本身为nil。原因是,可能是NSPersistentStoreCoordinator不符合协议。为了使用==
和=代码>,对象需要符合此协议
==
和==代码>不要检查这种意义上的相等性。它们检查两个对象是否实际上是同一个对象。没有类似的值。它们都指向内存中的同一对象
您可以检查这两种类型,因为它们是对象。这对你的情况应该很好
关于第二个问题,您的代码应该如下所示:
func saveContext () {
var error: NSError? = nil
let managedObjectContext = self.managedObjectContext
if let moc = managedObjectContext {
if moc.hasChanges && !moc.save(&error) { //This line
// Replace this implementation with code to handle the error appropriately.
// abort() causes the application to generate a crash log and terminate.
//println("Unresolved error \(error), \(error.userInfo)")
abort()
}
}
}
如果让moc=managedObjectContext
,这里的区别是:如果managedObjectContext
不为零,则该值存储在常量moc
中。否则,内部的任何内容都不会被执行。您可以阅读有关optionals的更多信息。@iluvcapra我相信它属于NSManagedObjectContext类型的,因此我解决了这两个错误,但现在我发现了另一个似乎相关的错误。我会把它放在问题中只是把它放在问题中,你能不能帮我解决这个新的错误,因为我修复了过去的2个错误?这是个问题