Swift: sort array with alternative comparison

I’d like to sort my swift struct array using another comparison method (like localizedCompare, caseInsensitiveCompare or localizedCaseInsensitiveCompare). The swift standard string array sort function orders all uppercase letters before lowercase letters. Here’s my code:

import Foundation

struct DataStruct {

    struct Item {
        let title: String
        let number: Int
    }

        static var items = [
        Item(title: "apple", number: 30),
        Item(title: "Berry", number: 9),
        Item(title: "apple", number: 18)]
}

class DataFunctions {
    func sortItemsArrayTitle() {
        DataStruct.items.sort { $0.title < $1.title }
    }
}

Once called, the above code results in [Berry, apple, apple]. Unacceptable. Any suggestions?

  • check if all elements of an array have the same value in Swift
  • Why can't I use the short Array constructor syntax when creating an Array of a nested Struct?
  • Why is my image not being appended to the array?
  • How to implement flatten as an extension on an Array without type casting?
  • 'Invalid update: invalid number of rows in section 0
  • How do I convert a Swift Array to a String?
  • Solutions Collect From Internet About “Swift: sort array with alternative comparison”

    You can easily solve it by comparing the title lowercaseString as follow:

    DataStruct.items.sort { $0.title.lowercaseString < $1.title.lowercaseString }
    

    using localizedCompare it should look like this:

    DataStruct.items.sort { $0.title.localizedCompare($1.title) == .OrderedAscending }