Skip to content

Instantly share code, notes, and snippets.

@yccheok
Created September 22, 2021 00:50
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save yccheok/4313ed81967226a31db6d12e0e431d49 to your computer and use it in GitHub Desktop.
Save yccheok/4313ed81967226a31db6d12e0e431d49 to your computer and use it in GitHub Desktop.
SELECT id, "order" FROM plain_note WHERE archived = :archived AND trashed = :trashed ORDER BY "order" ASC
to
private func getUpdateOrdersBasedOnX(context: NSManagedObjectContext, sortDescriptors: [NSSortDescriptor], archived: Bool, trashed: Bool) -> [UpdateOrder] {
let predicate = NSPredicate(format: "archived == %i AND trashed == %i", (archived ? 1 : 0), (trashed ? 1 : 0))
// https://stackoverflow.com/a/64964284/72437
let objectIDExpression = NSExpressionDescription()
objectIDExpression.name = "objectID"
objectIDExpression.expression = NSExpression.expressionForEvaluatedObject()
objectIDExpression.expressionResultType = .objectIDAttributeType
let fetchRequest: NSFetchRequest<NSFetchRequestResult> = NSFetchRequest()
fetchRequest.entity = NSEntityDescription.entity(forEntityName: "NSPlainNote", in: context)
fetchRequest.resultType = .dictionaryResultType
fetchRequest.propertiesToFetch = [objectIDExpression, "order"]
fetchRequest.predicate = predicate
fetchRequest.sortDescriptors = sortDescriptors
var updateOrders: [UpdateOrder] = []
do {
let resultTypes = try fetchRequest.execute()
for resultType in resultTypes {
if let dict = resultType as? [String : Any] {
let objectID = dict["objectID"] as! NSManagedObjectID
let order = dict["order"] as! Int64
let updateOrder = UpdateOrder(objectID: objectID, order: order)
updateOrders.append(updateOrder)
}
}
return updateOrders
} catch {
//backgroundContext.rollback()
error_log(error)
}
return updateOrders
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment