Pergunta

Uma pergunta que tem ponderou-me para o tempo passado.Eu sou principalmente um .net desenvolvedor que brinca em objective-C para iPhone e Mac.

Como você ir sobre o envio de "conjunto de dados" entre os métodos em objective-c.Por exemplo, em C# você pode preencher um classe personalizada com dados e passá-la em torno de uma Lista de tipo de classe personalizada.Por exemplo, se você tinha uma classe de cliente você só iria fazer algo como:

List<Customer> customers = DataLayer.GetAllCustomers();

A única maneira que eu posso ver como isso pode ser feito em obj-c seria preencher um NSArray com objetos personalizados?Esta é uma forma eficiente de fazer as coisas?Quaisquer outras recomendações?Eu estou usando o sqlite como banco de dados/quero voltar.

Foi útil?

Solução

Você está no caminho certo.

Cacau da coleta de classes — o que todos têm mutável uma imutável variantes são:

  • NSArray:ordenou, pode conter um objeto várias vezes
  • NSDictionary:desordenada, mapeamento de teclas para os valores, as chaves são copiados
  • NSSet:desordenada, pode conter um objeto apenas uma vez
  • NSCountedSet:desordenada, pode conter um objeto várias vezes

O imutável variantes ajudar muito com eficiência.O padrão para os acessores de classes que têm mutável variantes é copiar em vez de manter.Este é codificada na @property mecanismo, usando a copy atributo na propriedade:

// Department.h
@interface Department : NSObject
@property (readwrite, copy) NSSet *employees;
@end

Isso significa que se você passar um mutável matriz para algo que leva a uma matriz, ele será copiado, e se você passar que para qualquer outra coisa, vai ser copiados novamente.O truque é que "copiar" um objeto imutável realmente apenas conserva-lo, então você só vai tomar uma batida, para que a primeira cópia.Você provavelmente quer para fazer uma cópia que a primeira vez de qualquer maneira, então você não passa de um mutável matriz para outra coisa, em seguida, modifica-lo para a parte de trás de tudo o que você passou para.

Para Cacau no Mac OS X, eu também recomendamos fortemente que você dê uma olhada no Núcleo de Dados.É uma alternativa para o "conjunto de dados" padrão de você pode ser usado para partir .NET/ADO/etc.Com os Dados do Núcleo, você não "obter todos os clientes" e, em seguida, passar essa coleção redor.Em vez disso, você consulta para os clientes que você se preocupa, e à medida que atravessam as relações dos objetos que você tenha consultado para, outros objetos serão puxados para você automaticamente.

Dados do núcleo também dá acesso a recursos como a modelagem visual de suas entidades, a geração automática de propriedade getters & setters, o controle refinado sobre a migração de uma versão de esquema para outro, e assim por diante.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top