我在Xcode 8 Beta中的Alecrim Core Data中遇到問題。 DataContext和DataContextOptions似乎從Swift_3分支中丟失。抓住吸管,我只是將主分支上的文件更新爲Swift3語法,希望功能沒有太大變化。但是當它試圖讀取數據時,我收到一條錯誤消息「無法在範圍內沒有NSManagedObjectContext的情況下獲取」。 我已經盡我所能地分類了。斷點設置在創建一個NSManagedObjectContext的地方,我可以看到它。創建fetchRequest的地方已經使用新的NSFetchReqeust語法進行了更新(儘管我沒有看到MOC的跡象)。在Swift 3中使用Alecrim核心數據
這裏是我的鏈接進入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
}
}
有沒有人有經驗與Alecrim在Swift 3,可以幫助找出發生了什麼問題?
謝謝, 邁克