Передача наборов данных

Вопрос, над которым я размышлял последнее время. Я в первую очередь разработчик .net, который балуется Objective-C для iPhone и Mac.

Как вы отправляете «наборы данных» между методами в объекте-c. Например, в C# вы можете заполнить настраиваемый класс данными и передать их в списке типа настраиваемый класс. Например, если бы у вас был класс клиентов, вы бы просто сделали что-то вроде:

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

Единственный способ увидеть, как это можно сделать в obj-c, - это заполнить NSArray настраиваемыми объектами? Это эффективный способ делать что-то? Есть другие рекомендации? Я использую sqlite в качестве базы данных / данных, которые хочу вернуть.

Также вы можете поискать легкие оболочки вокруг SQLite, чтобы упростить создание объектов из вашей базы данных.

Kendall Helmstetter Gelner 15.09.2008 09:50
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
8
1
2 927
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы на правильном пути.

Классы коллекций Какао - все они имеют изменяемые и неизменяемые варианты - это:

  • NSArray: заказанный, может содержать объект несколько раз
  • NSDictionary: неупорядоченный, отображение ключей в значения, ключи копируются
  • NSSet: неупорядоченный, может содержать объект только один раз
  • NSCountedSet: неупорядоченный, может содержать объект несколько раз

Неизменяемые варианты очень помогают с эффективностью. Стандартный шаблон для методов доступа к классам, которые имеют изменяемые варианты, - это копирование, а не сохранение. Это кодифицировано в механизме @property с помощью атрибута copy в свойстве:

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

Это означает, что если вы передадите изменяемый массив чему-то, что принимает массив, он будет скопирован, а если вы передадите его чему-то другому, он будет скопирован снова. Хитрость заключается в том, что «копирование» неизменяемого объекта на самом деле просто сохраняет его, поэтому вы получаете удар только для этой первой копии. Вы, вероятно, хотеть, чтобы сделать копию в первый раз в любом случае, чтобы вы не передавали изменяемый массив чему-то еще, а затем изменяли его за спиной того, чему вы его передали.

Что касается Cocoa в Mac OS X, я также настоятельно рекомендую вам взглянуть на Core Data. Это альтернатива шаблону «набор данных», который вы могли использовать в .NET / ADO / etc. С Core Data вы не «собираете всех клиентов», а затем передаете эту коллекцию. Вместо этого вы запрашиваете клиентов, о которых вы заботитесь, и по мере того, как вы просматриваете отношения объектов, о которых вы запрашиваете, другие объекты будут автоматически извлечены для вас.

Core Data также предоставляет вам такие функции, как визуальное моделирование ваших объектов, автоматическое создание средств получения и установки свойств, детальный контроль над миграцией из одной версии схемы в другую и т. д.

Другие вопросы по теме