Вы сохраняете число, а не строку, так что вы возвращаете NSNumber, а не строку. Исключение довольно ясное - вы не можете сбрасывать NSNumber в String - вы можете использовать stringValue()
, чтобы получить строковое представление NSNumber
if let op = dataTypeRef?.toOpaque() {
let data = Unmanaged<NSData>.fromOpaque(op).takeUnretainedValue()
if let string: AnyObject? = NSKeyedUnarchiver.unarchiveObjectWithData(data) as? AnyObject? {
if key == "IMAGE_TAKEN"
{
return string.stringValue() as! String!
}
else if string == nil
{
return nil
}
}
}