Como posso classificar por um atributo transformável em uma NSFetchedResultsController?
-
18-09-2019 - |
Pergunta
Eu estou usando NSValueTransformers aos atributos criptografar (strings, datas, etc.) em meu modelo Core Data, mas tenho certeza que ele está interferindo com a classificação na minha NSFetchedResultsController.
Alguém sabe se existe uma maneira de contornar este problema? Suponho que isso depende de como o tipo é realizada; se é sempre única realizada diretamente no banco de dados, então eu sou provavelmente fora da sorte. Se ele classifica nos próprios objetos, então talvez haja uma maneira de ativar a transformação antes de ocorrer o tipo.
Eu estou supondo que é diretamente no banco de dados, embora, desde o tipo seria fundamental em agarrar subconjuntos da coleção, que é o principal benefício do NSFetchedResultsController de qualquer maneira.
Nota: Devo acrescentar que há algum comportamento estranho aqui ... a colheita não sorte na primeira sessão (sessão onde os objetos são criados), mas ele faz tipo na posterior sessões (onde os objetos já existem e estão apenas sendo recuperados). Então, talvez a classificação faz trabalho com transformables, mas talvez haja ressalva em que eles têm de ser salvo primeiro ou algo parecido (?)
Solução
Se você está classificando dentro do NSFetchedResultsController
então é contra o armazenamento (banco de dados ou seja). No entanto, você pode executar um "secundário" tipo contra os resultados quando eles estão na memória e, portanto, descriptografado chamando -sortedArrayUsingDescriptors:
actualizar
Eu acredito que o seu comportamento inconsistente, provavelmente, é baseado no que já está na memória contra o que está sendo lido diretamente do disco.