Thanks ja.
Do you have an intuition as to which would be faster end-to-end of the following?
A. Do the complex query on non-main thread X, get all the primary keys of the result set and pass the N primary keys back to the main UI thread. Then redo N individual queries on the main thread by primary key lookup.
B. Do the complex query on non-main thread X, copy all the objects into dictionaries and pass the dictionaries back to the UI thread.
My thought is that B might be faster since even in A, Realm needs to read the objects twice and unmarshal them twice. Copying should be fast especially if the strings are just immutable NSStrings since calling copy on an immutable string is really just calling "retain" (however that makes sense under ARC).
I think Realm is really awesome and I want to use it in potentially many projects, but this threading issue is something that needs to be solved for more general adoption. :-) I'd be happy to help - are you open to pull requests or do you need beta testers?
Anyway, thanks for your help and thanks for making Realm available for free - that's very generous of you and I certainly appreciate it and your help.
Best wishes.