gpt4 book ai didi

Swift - MyClass 与 NSManagedObject 不同

转载 作者:可可西里 更新时间:2023-11-01 01:06:22 24 4
gpt4 key购买 nike

有人可以向我解释为什么以下 Playground 代码会给我错误

EventEntity is not identical to NSManagedObject

import UIKit
import CoreData

class Table<T: NSManagedObject> {
func toFetchedResultsController() -> FetchedResultsController<T> {
return FetchedResultsController<T>()
}
}

class EventEntity: NSManagedObject {

}

class FetchedResultsController<T: NSManagedObject> {

}

class Factory<T: NSManagedObject>: NSObject {
var fetchedResultsController: FetchedResultsController<T>

init(fetchedResultsController: FetchedResultsController<T>) {
self.fetchedResultsController = fetchedResultsController
super.init()
}
}

class TableViewDataSource: NSObject {
init(factory: Factory<NSManagedObject>) {
super.init()
}
}

var dataSource: TableViewDataSource

let fetchedResultsController = Table<EventEntity>().toFetchedResultsController()
let factory = Factory(fetchedResultsController: fetchedResultsController)

dataSource = TableViewDataSource(factory: factory)

我在使用 Swift 开发的应用程序时遇到了问题。我创建了这个 Playground 来重现这个问题。

这个错误的原因是什么? EventEntity 实际上是 NSManagedObject 的子类,T 是一个泛型,它指定了 NSManagedObject 类的要求。

谢谢!

最佳答案

看看你的TableViewDataSource初始值设定项:

init(factory: Factory<NSManagedObject>) {
super.init()
}

在这里,您指定初始化程序需要 Factory<NSManagedObject> , 然后你传递给它 Factory<EventEntity> .这些类型不同

我想你的意思是指定 TableViewDataSource也适用于泛型(只要它是 some NSManagedObject ),像这样:

class TableViewDataSource<T: NSManagedObject>: NSObject {
init(factory: Factory<T>) {
super.init()
}
}

关于Swift - MyClass 与 NSManagedObject 不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28405950/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com