pheedsta
pheedsta

Reputation: 2080

Using UILocalizedIndexedCollation.section(for: collationStringSelector:) with array of structs

Assume I have an array of structs like so:

struct Record {
    let name: String
}

let array = [Record(name: "John"), Record(name: "Jim"), Record(name: "Bob")]

I would like to get the index of each element using UILocalizedIndexedCollation.section(for: collationStringSelector:). The problem is, when I pass:

#selector(getter: record.name)

the following error is returned:

Argument of '#selector' refers to var 'name' that is not exposed to Objective-C

Is there any way of exposing an instance value in a struct to a #selector? (NB: the struct I am passing is used extensively throughout my app and I don't really want to change it to a class)

Upvotes: 1

Views: 669

Answers (1)

pheedsta
pheedsta

Reputation: 2080

Converting the struct variable to an NSString and using one of NSString's methods / variables is a work around that fixed the issue:

let index = UILocalizedIndexedCollation.current().section(for: (record.name as NSString), collationStringSelector: #selector(getter: NSString.uppercased))

Upvotes: 2

Related Questions