- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在 Xcode 8 Beta 中使用 Alecrim Core Data 时遇到问题。 Swift_3 分支中似乎缺少 DataContext 和 DataContextOptions。捕获救命稻草,我刚刚将文件从 master 分支更新为 Swift3 语法,希望功能没有发生太大变化。但是当它尝试读取数据时,我收到一条错误消息“如果范围内没有 NSManagedObjectContext,则无法获取”。我已经做了我能想到的尽可能多的分类。在创建 NSManagedObjectContext 的位置设置断点,我可以看到它。创建 fetchRequest 的位置已使用新的 NSFetchReqeust 语法进行了更新(尽管我在那里没有看到 MOC 的迹象)。
这是我到 Alecrim lib DataContext 的链接:
let dataContext = DataContext()
extension DataContext
{
public var collections: Table<CoreDataCollection> { return Table<CoreDataCollection>(context: self) }
public var expressions: Table<CoreDataExpression> { return Table<CoreDataExpression>(context: self) }
public var fileAssets: Table<CoreDataFileAsset> { return Table<CoreDataFileAsset>(context: self) }
public var purchases: Table<CoreDataPurchase> { return Table<CoreDataPurchase>(context: self) }
public var reeConfigs: Table<CoreDataReeConfig> { return Table<CoreDataReeConfig>(context: self) }
public var stickers: Table<CoreDataSticker> { return Table<CoreDataSticker>(context: self) }
}
以及尝试获取数据的部分:
for item in dataContext.reeConfigs {
let reeConfigVO = ReeConfigVO()
reeConfigVO.initFromCoreData(item)
items.append(reeConfigVO)
}
我不确定这是否有帮助,但 Alecrim 的部分抛出了错误:
// MARK: - GenericQueryable
extension TableProtocol {
public final func execute() -> [Self.Element] {
do {
return try self.toFetchRequest().execute() as [Self.Element]
}
catch let error {
AlecrimCoreDataError.handleError(error)
}
}
}
// MARK: - CoreDataQueryable
extension TableProtocol {
public final func toFetchRequest<ResultType: NSFetchRequestResult>() -> NSFetchRequest<ResultType> {
let fetchRequest = NSFetchRequest<ResultType>()
fetchRequest.entity = self.entityDescription
fetchRequest.fetchOffset = self.offset
fetchRequest.fetchLimit = self.limit
fetchRequest.fetchBatchSize = (self.limit > 0 && self.batchSize > self.limit ? 0 : self.batchSize)
fetchRequest.predicate = self.predicate
fetchRequest.sortDescriptors = self.sortDescriptors
return fetchRequest
}
}
是否有人在 Swift 3 中使用 Alecrim 的经验可以帮助找出问题所在?
谢谢,迈克
最佳答案
我找到了我正在寻找的答案。我不确定这就是 Alecrim 想要做的事情,因为正如我提到的,swift_3 分支甚至不包含 DataContext 或 DataContextOptions。但是...如果您像我一样从主分支引入这些文件并将它们更新到 swift 3,并且您遇到错误“无法在范围内没有 MSManagedObjectContext 的情况下获取”问题,以下是如何在“TableProtocol.txt”中修复它。 swift ”文件:
extension TableProtocol {
public final func execute() -> [Self.Element] {
do {
return try self.context.fetch(self.toFetchRequest()) as! [Self.Element]
//return try self.toFetchRequest().execute() as [Self.Element]
}
catch let error {
AlecrimCoreDataError.handleError(error)
}
}
}
self.context 是它工作所需的 NSManagedObjectContext (或派生类型,即我们的 DataContext)。作为! [Self.Element] 至关重要,因为 Swift 使用它来推断构建 NSFetchRequest 的函数中的 RestultType
希望这有帮助。
关于swift - 将 Alecrim Core Data 与 Swift 3 结合使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38795460/
我在 Xcode 8 Beta 中使用 Alecrim Core Data 时遇到问题。 Swift_3 分支中似乎缺少 DataContext 和 DataContextOptions。捕获救命稻草
我是一名优秀的程序员,十分优秀!