Одно перо, различные активы. Пакеты?

Я бы взглянул на Watson Assistant и посмотрел на различные виды ответов , которые вы можете реализовать.

enter image description here На изображении выше показано, как добавление ответа опции будет похоже на пример JSON, который вы опубликовали.

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

11
задан Binarian 4 June 2014 в 16:20
поделиться

4 ответа

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

Мерзавец делает это супер легким.

1
ответ дан 3 December 2019 в 11:21
поделиться

Один из способов сделать это - переместить все ваши иллюстрации в отдельный пакет и динамически загружать его во время выполнения (вроде как «медиа-плагин»).

  • Создайте отдельный проект и выберите «Mac OS X» / Framework и библиотека / Bundle. " Назовите его, скажем, media.bundle .

  • Переместите все свои иллюстрации в этот проект.

  • Чтобы упростить жизнь, добавьте дополнительный шаг «Выполнить сценарий» к цели, копируя построенный вывод из каталог сборки во вложенную папку в основном проекте. Чтобы сделать это еще проще, добавьте медиа-пакет в качестве зависимого проекта в ваш основной проект, чтобы он автоматически перестраивался.

В вашем основном проекте вам понадобятся эти два метода. Вы можете сделать их статическими методами в классе BundleUtils :

+ (NSString *) bundleDirectoryFor:(NSString *) bundleName
{
 NSString* basePath = [[[NSBundle mainBundle] resourcePath]
     stringByAppendingPathComponent:[NSString
                                stringWithFormat:@"%@.bundle", bundleName]];
 return [[NSBundle bundleWithPath:basePath] resourcePath];
}

+ (NSString *) resourceInBundle:(NSString *)bundleName 
                       fileName:(NSString *)fileName
{
 NSString *bundlePath = [BundleUtils bundleDirectoryFor:bundleName];
 return [bundlePath stringByAppendingPathComponent:fileName];
}

Теперь каждый раз, когда вы хотите получить доступ к иллюстрации в вашем пакете, вы можете получить путь к нужному файлу с помощью:

NSString* imageFile = [BundleUtils resourceInBundle:@"media.bundle" 
                                        fileName:@"image.jpg"];
UIImage* image = [UIImage imageNamed:imageFile];

Очевидно, что имя «media.bundle» может быть заменено во время выполнения на другое, чтобы вы могли переключиться на другие пакеты в зависимости от потребностей вашего приложения. Это также удобный способ поддержки загружаемого контента (скажем, в виде платных надстроек).

Одно предостережение: это предполагает, что вам необходимо динамически загружать изображения во время выполнения с помощью кода. Но у вас также есть статические файлы NIB, в которые встроены медиа. Вам нужно будет найти способ заставить статический файл NIB использовать динамические методы для разрешения имен файлов мультимедиа. Один из способов - использовать MethodSwizzling и отслеживать пути к файлам с префиксом типа, скажем, «media: image.png», и перенаправлять их для использования методов BundleUtil.

5
ответ дан 3 December 2019 в 11:21
поделиться

Я думаю, что лучший вариант - использовать что-то вроде git.

Если вы использовали git, у вас может быть основная ветвь, содержащая основной исходный код и логику, и дочерние ветки, которые иметь разные наборы данных / изображений для каждого конкретного варианта вашего приложения. В этом решении XCode даже не узнает, что происходит.

0
ответ дан 3 December 2019 в 11:21
поделиться

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

0
ответ дан 3 December 2019 в 11:21
поделиться
Другие вопросы по тегам:

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