У меня возникли проблемы с Aleibr Core Data в Xcode 8 Beta. DataContext и DataContextOptions, похоже, отсутствуют в ветви Swift_3. Схватившись на соломинках, я просто обновил файлы с главной ветви до синтаксиса Swift3, надеясь, что функциональность не слишком сильно изменилась. Но когда он пытается прочитать данные, я получаю сообщение об ошибке «Не удается получить без NSManagedObjectContext в области видимости». Я сделал столько же сортировки, сколько могу придумать. Точки останова, установленные на месте, которое создает NSManagedObjectContext, и я могу это увидеть. Место, создающее fetchRequest, было обновлено с помощью нового синтаксиса NSFetchReqeust (хотя я не вижу никаких признаков MOC там).Использование данных Aleibr Core с Swift 3
Вот моя ссылка в 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, который может помочь выяснить, что происходит не так?
Спасибо, Майк