/ / Implementando a marcação usando dados principais no iPhone - iphone, objetivo-c, dados principais, marcação

Implementando Marcação usando Core Data no iPhone - iphone, object-c, core-data, tagging

Eu tenho um aplicativo que usa CoreData e eu estoutentando descobrir a melhor maneira de implementar a marcação e a filtragem por tag. Para meus propósitos, se eu estivesse fazendo isso no SQLite bruto, precisaria apenas de três tabelas, tags, item_tags e claro meu items mesa. A filtragem seria tão simples quanto a união entre as três tabelas, onde apenas items estão relacionados às tags fornecidas. Bem direto.

Mas, existe uma maneira de fazer isso no CoreData e utilizando NSFetchedResultsController? Não parece que NSPredicate dar a você a capacidade de filtrar junções. NSPredicate"s não é SQL completo de qualquer maneira, então eu provavelmente estou latindoa árvore errada lá. Estou tentando evitar reimplementar meu aplicativo usando SQLite sem CoreData, pois estou gostando do desempenho que o CoreData me oferece em outras áreas. Sim, eu considerei (e construí uma implementação de teste) mergulhar no SQLite bruto que o CoreData gera, mas isso não é uma prova futura e eu quero evitar isso também.

Alguém já tentou combater a marcação / filtragem com CoreData em um UITableView com NSFetchedResultsController

Respostas:

9 para resposta № 1

Primeiro de tudo, você realmente não precisa de um Item_Tags entidade. O Core Data pode modelar relacionamentos muitos para muitos sem a necessidade de uma entidade intermediária. Você pode ter muitos tags relacionamento que tem um recíproco para muitos items relacionamento e o Core Data fará toda a mágica para que isso aconteça nos bastidores.

Portanto, para configurar uma solicitação de busca para fazer o que você descreve, faça algo assim. Suponha que você tenha um tag que representa a tag que você deseja filtrar. Escreva um predicado como este:

[fetchRequest setPredicate:[NSPredicate predicateWithFormat:@"%@ IN tags", tag]];

Isso fornecerá um predicado que retorna apenas Items que tem tag no seu conjunto de tags relacionamentos. Muito fácil, né?

Lembre-se: os dados principais não são um banco de dados. É um sistema de gerenciamento de gráfico de objetos. O fato de ele usar SQL nos bastidores realmente não deve influenciar a maneira como você o usa.