Understanding manual breadcrumbs

I’m trying to better understand manual breadcrumbs.
This is what I’m currently doing: when an interesting event happens, I send a crumb (using Swift) as follows:
SentrySDK.addBreadcrumb(crumb: crumb)
Then when a threshold is crossed, I send a log message:
SentrySDK.capture(message: message)
Does that sound right? Do I need to send a log message (or error) for the breadcrumbs to be seen?
In each breadcrumb, I’m passing two Strings (category and message). Are there other ways to send information, such as in the .data variable, so that I could send a dictionary, for example?
Thanks for this; I find the docs thin on this topic.