Как я справляюсь с созданием Облегченного по сравнению с Заплаченной версией приложения для iPhone?

Если вы используете сгенерированные БД идентификаторы (например, IDENTITY в MS SQL), вам просто нужно добавить сущность в ObjectSet и SaveChanges для связанного ObjectContext. Идентификатор будет автоматически заполнен для вас.

using (var context = new MyContext())
{
  context.MyEntities.AddObject(myNewObject);
  context.SaveChanges();

  int id = myNewObject.Id;
}

За каждой вставкой с платформой Entity следует Select SCOPE_IDENTITY (), которая возвращает автоматически сгенерированный Id для вновь вставленной записи.

Однако вы не можете получить автоматически сгенерированный Id, прежде чем сохранить изменения в БД. Если вы хотите сделать все это за одну транзакцию, я могу предложить вам вставить записи в БД, написав пользовательскую хранимую процедуру с использованием транзакции.

65
задан bummi 31 December 2014 в 00:20
поделиться

6 ответов

Исходный ответ со дней прежде в покупке приложения. Корректный ответ теперь должен поставить единственный двоичный файл и предложить Вашу заплаченную версию до в обновлениях приложений . Это - немного больше кода, но это - единственная отправка, и Ваша скорость преобразования, вероятно, будет лучше.

Однако, если Вы все еще хотите к версиям Вашего приложения:

XCode имеет хорошую поддержку нескольких целей.

Из меню проектов выбирают "Новую Цель...". Добавьте другой исполняемый файл iPhone (Сенсорное Приложение Какао), можно затем указать на ресурсе основанием ресурса, какие объекты включены в цель. Это может включать только компилирующий определенный код в Вашу заплаченную версию.

можно надеть быструю визуальную обратную связь, что и не включено в текущую цель путем щелчка правой кнопкой по "Группам и Файлам" по заголовку списка (вершина lhs) и включения Целевого Членства.

Вы переключаетесь между созданием различных целей таким же образом, как Вы переключаетесь между созданием для Средства моделирования или iPhone.

Для определения во время изготовления, как определенный класс ведет себя, можно сделать, две вещи - включают две версии класса, которые каждый создаются для их соответствующей цели или, можно установить флаг времени изготовления для препроцессора. Выберите Цель в "Группах, и Файлы" список затем "получают информацию" о той цели. Перейдите к вкладке сборки, и поиск "предварительно обрабатывают". Необходимо видеть, что n объект, названный "Макросы Препроцессора", добавляет LITE к облегченной цели и таким же образом добавляет PAID к заплаченной цели.

Thein в Ваших исходных файлах можно определить во время компиляции, какую версию Вы компилируете для использования #ifdef LITE и т.д.

Движение еще больше, Вы могли установить глобальный флаг или переменную члена AppDelegate на основе ОБЛЕГЧЕННОГО #ifdef и изменить поведение во времени выполнения для Облегченных и платных приложений. Я не уверен, что вижу значение в этом все же.

83
ответ дан Rog 24 November 2019 в 15:25
поделиться

Как разработчик Вы хотите написать наименьшее количество возможного кода (меньше ошибок, меньше времени). Когда версии сборки отличаются, необходимо будет инвестировать больше работы и отдельных тестов.

, Если Вы не делаете дорогой инструмент хакера, Вы могли бы считать хранение различия максимально простым, - просто имеют некоторые скрытые предпочтения или настройки. Таким образом, большинство проверок и тестов сделает ту же работу в обеих сборках, очень мало кода будет отличаться. Ключевое беспокойство не состоит в том, чтобы обременить себя как разработчик.

причина иметь расходящиеся сборки состоит в том, чтобы гарантировать, что Свободное не может быть взломано "Заплаченную" версию. Люди, которые попытались бы обойти такое простое ограничение, являются, прежде всего, sub набором тех, кто перепрошил бы их телефоны. Независимо от того, что Вы делаете Вы не получите их деньги ни при каком условии кроме, они так ошеломлены, они покупают его только для выражения признательности.

24
ответ дан Paxic 24 November 2019 в 15:25
поделиться

Создатель "Цветника" детализирует профессионалов/недостатки разных подходов к созданию облегченной версии здесь:

http://gamesfromwithin.com/from-full-to-lite-in-under-an-hour

7
ответ дан Brad Parks 24 November 2019 в 15:25
поделиться

Я использовал ответвление мерзавца. Я перешел свое главное приложение и сделал несколько тонких настроек для отключения набора содержания. Теперь я работаю главным образом в основном ответвлении и переключаюсь на облегченный и слияние в последнем, когда основные разработки происходят. Работы очень хорошо.

1
ответ дан Alex Wayne 24 November 2019 в 15:25
поделиться

Я добился успеха с:

Учебник - Один и тот же проект Xcode Создание нескольких продуктов для iPhone http://adeem.me/blog/2009/04/18/tutorial-same -xcode-project-create-multiple-products-for-iphone /

Он охватывает большую часть того, что Роджер Нолан упомянул в своем ответе на вопрос, но шаг за шагом со снимками экрана.

Он позволяет вам использовать С # ifdef для включения или исключения функций в вашем приложении.

Некоторые детали были не совсем правильными - я уверен, из-за различий в Xcode - но было не так уж сложно определить правильный / новый способ сделать каждый шаг.

ПРИМЕЧАНИЕ: Вам нужно будет пойти в Apple и получить новый идентификатор приложения для Lite-версии вашего приложения. Шаги, описанные в руководстве, создадут копию файла info.plist, которую вы, вероятно, переименуете во что-то вроде infoLite.

3
ответ дан 24 November 2019 в 15:25
поделиться

В iPhone 3.0 вместо этого можно использовать покупки в приложении, чтобы разблокировать все функции без необходимости создавать более одного приложения. Я также думаю, что это предотвратит получение людьми этого бесплатно, но я не так уверен в этом.

2
ответ дан 24 November 2019 в 15:25
поделиться
Другие вопросы по тегам:

Похожие вопросы: