2015-12-31 10 views
1

У меня есть два приложения, которые разделяют холст чертежа, назовем один «ребенок» и другой «родительский».NSKeyedUnarchiver не работает с файлом, сделанным в другом приложении

Они оба кодируют свои собственные рисунки и загружают их в Parse. Когда они используют один и тот же рисунок, на самом деле их отдельные рисунки накладываются друг на друга.

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

Это два отдельных приложения (поскольку они построены иначе иначе) - возможно ли, что что-то о ID приложения закодировано в файл NSData?

+0

Как я уже сказал, с тех пор, как вы используете swift, имя пакета кодируется в имя класса и, следовательно, в потоковый архив. Убедитесь, что все ваши классы объявлены с помощью @objc (что приведет к победе над именем класса) и посмотрите, работает ли это. –

+0

Кроме того, вы говорите, что «структура классов» одинакова, вы фактически используете одни и те же классы? Как отмечено выше, имя класса зашифровывается в архив, вот как он знает, что нужно воссоздать. –

+0

Их имена и все внутри одинаковы. Сейчас я пробую свой подход, я надеюсь, что это будет трюк. – Walter

ответ

1

Как я уже сказал, с тех пор, как вы используете swift, имя пакета закодировано в имя класса и, следовательно, в потоковый архив. Убедитесь, что все ваши классы объявлены с помощью @objc (что приведет к победе над именем класса) и посмотрите, работает ли это.