I am building an application using CoreData which will require me to store an array of floating point numbers against instances of an Entity, and then fetch a selection of these entities in order of the (say) manhattan distance between their respective matrices.
Here is a rough diagram of something like what I mean:
Entity: {
name: 'instance 1',
data: [ 0.1, 0.2, 0.1, 0.1, 0.05, ... ]
},
Entity: {
name: 'instance 2',
data: [ 0.4, 0.9, 0.1, 0.1, 0.02 ... ] // want to sort using this data
}
I know that it's possible to use a 'transformable' attribute for 'data', and encode an NSArray, but I don't believe it's possible to use the contents of that array in fetch or sorting queries.
So, my question is: what options do I have to build this? Is it possible to somehow extend CoreData to allow me to perform the vector calculations as part of the 'fetch' request? Or would I have to load every object into memory and then sort manually?..
Ultimately I am trying to find the most efficient option, because I expect to be dealing with thousands of instances, each with a 10-20 item feature vector.
Any suggestions as to the possible architecture here would be appreciated by a CoreData newbie ;-)
Please let me know if I have not framed this clearly enough and I will try to elaborate.