Этот способ позволяет пользователю получить 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
}
Я предполагаю теперь. но:
Задержка - то, потому что, будучи не могущей найти пользовательский сериализатор dll, система создает эквивалентный код (который является очень трудоемким), на лету.
Способ избежать задержки состоит в том, чтобы иметь систему, создают DLL и удостоверяются, что это доступно.EXE - Вы попробовали это?
Хорошо, я столкнулся с этой проблемой и нашел решение для нее, специфичное для моей области.
Это произошло из-за того, что я пытался сериализовать список в XML-документ (файл) без корневого атрибута XML. Как только я добавил следующие файлы, ошибка исчезнет.
XmlRootAttribute rootAttribute = new XmlRootAttribute();
rootAttribute.ElementName = "SomeRootName";
rootAttribute.IsNullable = true;
Не знаю, решит ли это вашу проблему, но она устранила мою.