Tengo dos matrices, una NSMutableArray y una NSArray. NSMutableArray es la "tienda", almacena los resultados de una fuente de NSArrays. Cada 5 minutos, entra un nuevo NSArray y los datos deben filtrarse y ordenarse.Combinar NSMutableArray con un NSArray, filtrando los duplicados
Ordenar por fecha es bastante fácil, así que pude obtener el NSArray ordenado por NSDate. La ordenación de la otra matriz no es necesaria, ya que solo causaría confusión con el usuario.
Lo que quiero hacer: el NSArray tiene una gran cantidad de objetos diferentes a los que todos responden - [nombre del objeto], devolviendo un NSString. El NSArray debe combinarse en NSMutableArray, agregando solo nuevos objetos.
La fusión en sí misma no es un problema, pero el rendimiento sí lo es. NSMutableArray puede contener hasta 3000 elementos, y NSArray puede contener hasta 250 elementos, aunque normalmente solo 5 o 6 de ellos deben fusionarse en NSMutableArray.
Entonces, mi pregunta es: ¿cómo se fusionan dos matrices en Objective-C, filtrando los duplicados, sin iterar (250 * 3000) veces?
Tom
Editado para aclarar algo
Los objetos "duplicar" son objetos que están duplicados para el usuario, pero no en el código. Tienen el mismo nombre, pero no la misma dirección.
Más aclaración: @"value" != @"value" // true
Esta solución se ve bien, pero probablemente sea un poco menos comedora de rendimiento que simplemente iterar a través de todos los objetos manualmente. Actualmente estoy usando esto como una solución temporal, hasta que haya implementado una mejor manera de hacerlo. –
Por alguna razón oscura, está planteando una excepción (iOS7): 'El lado izquierdo de un operador ALL o ANY debe ser un NSArray o un NSSet.' Funciona bien al invertir el orden de la cadena de predicados: @ "NONE% @. Name == name" –