FileNotFoundException для mscorlib.XmlSerializers.DLL, который не существует

Этот способ позволяет пользователю получить URL-адрес. Он разбирает NSData в NSDictionary, а затем в NSObject.

let urlS = "http://api.localhost:3000/"

func getUser(username: Strung) -> User {
   var user = User()
   let url = NSURL(string: "\(urlS)\(username)")
   if let data = NSData(contentsOfURL: url!) {
     setKeysAndValues(user, dictionary: parseData(data))
   }
   return user
}

func setKeysAndValues (object : AnyObject, dictionary : NSDictionary)  -> AnyObject  {
    for (key, value) in dictionary {
        if let key = key  as? String, let value = value as? String {
            if (object.respondsToSelector(NSSelectorFromString(key))) {
                object.setValue(value, forKey: key)
            }
        }
    }
    return object
}

func parseData (data : NSData)  -> NSDictionary  {
    var error: NSError?
    return NSJSONSerialization.JSONObjectWithData(data, options: NSJSONReadingOptions.MutableContainers, error: &error) as! NSDictionary
}
12
задан starblue 25 April 2009 в 11:23
поделиться

3 ответа

Я предполагаю теперь. но:

  1. Система могла бы генерировать сериализатор для всего mscorlib, который мог быть очень медленным.
  2. Вы могли, вероятно, избежать этого путем обертывания системного типа в собственный тип и сериализации этого вместо этого - затем Вы получите сериализатор для своего собственного блока.
  3. Вы смогли создавать сериализатор для mscorlib с sgen.exe, который был старым способом создать сериализатор dlls, прежде чем он был интегрирован в VS.
2
ответ дан 2 December 2019 в 22:24
поделиться

Задержка - то, потому что, будучи не могущей найти пользовательский сериализатор dll, система создает эквивалентный код (который является очень трудоемким), на лету.

Способ избежать задержки состоит в том, чтобы иметь систему, создают DLL и удостоверяются, что это доступно.EXE - Вы попробовали это?

4
ответ дан 2 December 2019 в 22:24
поделиться

Хорошо, я столкнулся с этой проблемой и нашел решение для нее, специфичное для моей области.

Это произошло из-за того, что я пытался сериализовать список в XML-документ (файл) без корневого атрибута XML. Как только я добавил следующие файлы, ошибка исчезнет.

XmlRootAttribute rootAttribute = new XmlRootAttribute();
rootAttribute.ElementName = "SomeRootName";
rootAttribute.IsNullable = true;

Не знаю, решит ли это вашу проблему, но она устранила мою.

4
ответ дан 2 December 2019 в 22:24
поделиться
Другие вопросы по тегам:

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