My code:
//search all of applications
let queryString = "kMDItemContentTypeTree=com.apple.application"
// sort by last metadata change
let sorting = [kMDItemAttributeChangeDate] as CFArray
// create query and assign sorting param
let query = MDQueryCreate(kCFAllocatorDefault, queryString as CFString, nil, sorting)
// ISSUE HERE
// Set comparation block that called for sorting
MDQuerySetSortComparatorBlock(query, {
if let date1 = $0 as? Date,
let date2 = $1 as? Date {
return date1 < date2 ? .compareLessThan : .compareGreaterThan
}
return CFComparisonResult.compareEqualTo
})
MDQuerySetDispatchQueue(query, DispatchQueue(label: "background", qos: .background) )
MDQueryExecute(query, CFOptionFlags())
issue is in correct way to write MDQuerySetSortComparatorBlock - I'm do not understand how is it must be written
I see warnings:
Cast from 'UnsafePointer<Unmanaged?>?' (aka 'Optional<UnsafePointer<Optional<Unmanaged>>>') to unrelated type 'Date' always fails