Swift中的`AnyObject`可以处理任何类型的对象吗?真?

时间:2016-06-29 10:35:51

标签: ios swift swift2 swift3 anyobject

我问这个问题是为了解AnyObject的含义。我已经解决了我的错误。

我有一个用来存储一些用户值的类,比如说

class UserDetails : NSObject
{
    var name : String?

    init(name : String)
    {
        super.init()
        self.name = name
    }
}

我正在将UserDetails类的对象存储为NSUserDefaults

NSUserDefaults.standardUserDefaults().setObject(userData, forKey: "user_details")

以上行没有向我显示任何错误,因为方法setObject接受类型为AnyObject?的参数,但在执行时它显示错误

*** Terminating app due to uncaught exception 'NSInvalidArgumentException', 
reason: 'Attempt to insert non-property list object <Sample.UserDetails: 0x7b1189b0> for key user_details'
  • 那么,为什么我无法存储UserDetails类型的对象。
  • AnyObject
  • 的实际类型是什么
  • 为何抛出InvalidArgumentException

我真的需要区别对象AnyObject可以处理什么类型的对象?

谢谢。

0 个答案:

没有答案