Intereting Posts
Управление приложениями не отображается на панели «Itunes Connect» Просмотр индикатора активности в полноэкранном режиме UITableview слияние с домашним индикатором на iPhone X Когда searchController активен, изменения стиля строки состояния Я хочу сделать кнопку со значком треугольника UIImageView изменяет размер в режиме ориентации в ландшафтном режиме программно Поддержка модулей в статической библиотеке iOS установить размер изображения для уменьшенного изображения, сгенерированного с помощью AVAssetImageGenerator ios Является ли couchDB мобильной стабильной или хорошей для использования в приложении для производства ios? Почему мой делегат становится ноль? Ошибка входа в систему Google OAuth: недопустимые учетные данные Самый оптимальный метод реализации отображаемых форм? iOS вводят код, когда код компилируется Xcode или clang Баннер iAd не доступен для кликов Как отключить функцию push-уведомления в проекте xcode?

ExecutionEngineException: попытка JIT-метода компиляции 'System.Collections.Generic.Dictionary'

В моей игре unity3d у меня есть следующий словарь:

public Dictionary<string, List<UpgradeData>> upgradeList; 

где UpgradeData – очень простой класс:

 public class UpgradeData { public bool lockStatus; public bool purchased; } 

Я читаю здесь, что вы не можете использовать типы значений в качестве словарных ключей, но насколько я знаю, что укуса не является типом значений. Поэтому проблема должна исходить из использования List в качестве значения словаря. Любая идея, как обойти это. Код работает как на платформе Windows, так и на MacOS. Я пытаюсь сериализовать этот Словарь с помощью бинарного форматирования. У меня были аналогичные проблемы с сериализацией других классов, но мне удалось это исправить, добавив:

  if (Application.platform == RuntimePlatform.IPhonePlayer) { System.Environment.SetEnvironmentVariable("MONO_REFLECTION_SERIALIZER", "yes"); } 

Что мне нужно сделать, чтобы сериализовать словарь?

Изменить: Забыл включить весь класс, который работает с Словарем

 [Serializable] public class CharacterUpgradeList { private UpgradeData[] _upgrade_Data; private List<UpgradeData>[] upgData; public Dictionary<string, List<UpgradeData>> upgradeList; public CharacterUpgradeList() { upgData = new List<UpgradeData>[4]; for (int i = 0; i < upgData.Length; i++) { upgData[i] = new List<UpgradeData> { new UpgradeData(), new UpgradeData(), new UpgradeData(), new UpgradeData(), new UpgradeData(), new UpgradeData() }; } upgradeList = new Dictionary<string, List<UpgradeData>> { {"Man",upgData[0]}, {"Woman",upgData[1]}, {"Boy",upgData[2]}, {"Girl",upgData[3]} }; } } 

и затем я создаю объект из вышеупомянутого класса в этом классе:

 [Serializable] class GameData { public int _coinAmount, _upgradeLevel; public Level_Data[] _level_Data; public CharacterUpgradeList _charUpgradeList; public SerialVector2 serialVector; public GameData() { _charUpgradeList = new CharacterUpgradeList(); } } 

И я пытаюсь сериализовать GameData.

BinaryFormatter опирается на компиляцию JIT, которая не поддерживается в iOS. Проблема заключается не в ваших структурах данных, а в ограничениях функций платформы.

Вам придется использовать другую библиотеку сериализации, которая поддерживает полную компиляцию AOT. Мне повезло с JsonFx . Некоторые люди рекомендовали protobuf-net .