Swift - NSCoding Set <Enum> - PullRequest
       32

Swift - NSCoding Set <Enum>

0 голосов
/ 10 октября 2018

В настоящее время я использую NSCoding в пользовательском классе, чтобы попытаться кодировать и декодировать два объекта Set <> безуспешно.

Моя проблема в том, что эти объекты Set ()baseSet & extraSet ) оба являются наборами другого объекта, который, соответственно, baseEnum & extraEnum .

Я пробовал:

public enum baseEnum: String {
  case X = "foo"
  case Y = "foos"
}
 (...)   

public class MyClass: NSObject, NSCoding {

   var baseSet = Set<baseEnum>()
   baseSet.insert(baseEnum.X)
    (...)

   public func encode(with aCoder: NSCoder) {
      aCoder.encode(baseSet, forKey: "baseSet")
      aCoder.encode(extraSet, forKey: "extraSet")
   }
}

Само кодирование завершается неудачно, выдавая ошибку:

* Завершение работы приложения из-за необработанного исключения 'NSInvalidArgumentException', причина: '- [_ SwiftValue encodeWithCoder:]: непризнанные селектор направлен например 0x109f959c0' * стек первых двух вызовов: (0x18409ed8c 0x1832585ec 0x1840ac098 0x1840a45c8 0x183f8a41c 0x184a523cc 0x1849f8d0c 0x184a04ad4 0x184a523cc 0x10157704c 0x101577180 0x184a523cc 0x101486f08 0x101486f9c 0x184a523cc 0x10145f884 0x10145fc3c 0x184a523cc 0x184a0bad4 0x18697e350 0x1869b60b0 0x186b97548 0x186b98c80 0x186b8d0e4 0x1869f2000 0x186a74ba4 0x10442d19c 0x10443a9bc 0x186a74aa0 0x186b650cc 0x186aa68f8 0x186aa1fcc 0x186984704 0x186a81d80 0x186a7a758 0x186984130 0x1869a518c 0x101414cb8 0x101417abc 0x10147c2c4 0x1013ce2b0 0x1013ce2d4 0x10442d19c 0x10443f574 0x10147abf0 0x101516e00 0x101516edc 0x101635d40 0x1016520cc 0x101651968 0x101646eac 0x10163ba6c 0x101641750 0x10163fa04 0x10166106c 0x10166081c 0x10165ebf8 0x183fd7b34 0x183fe3554 0x183fd762c 0x18471172c 0x184716ee4 0x184712d58 0x18404d9f4 0x184047404 0x184046c2c 0x18404479c 0x183f64da8 0x185f4a020 0x18df84758 0x101516f5c 0x1839f5fc0)

1024 *
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...