我正在使用Xcode8 Beta和Swift 3.0.我试图在NSObject上编码一个简单的对象,但我无法解码Int或NSInteger类型.(编码过程没问题)
代码
class Model : NSObject, NSCoding {
var seq: NSNumber?
var seq2: Int? // problem with seq2, NSInteger is not ok, either
var id: String?
var value: String?
override init() {
super.init()
}
required init?(coder aDecoder: NSCoder){
self.seq = aDecoder.decodeObject(forKey: "seq") as? NSNumber
self.seq2 = aDecoder.decodeInteger(forKey: "seq2")
self.id = aDecoder.decodeObject(forKey: "id") as? String
self.value = aDecoder.decodeObject(forKey: "value") as? String
}
func encode(with aCoder: NSCoder){
aCoder.encode(seq, forKey: "seq")
aCoder.encode(seq2, forKey: "seq2")
aCoder.encode(id, forKey: "id")
aCoder.encode(value, forKey: "value")
} …Run Code Online (Sandbox Code Playgroud) 这是一个演示类.我不希望我的类被复制,所以我删除了复制构造函数.我希望vector.emplace_back使用这个构造函数'MyClass(Type type)'.但这些代码不会编译.为什么?
class MyClass
{
public:
typedef enum
{
e1,
e2
} Type;
private:
Type _type;
MyClass(const MyClass& other) = delete; // no copy
public:
MyClass(): _type(e1) {};
MyClass(Type type): _type(type) { /* the constructor I wanted. */ };
};
std::vector<MyClass> list;
list.emplace_back(MyClass::e1);
list.emplace_back(MyClass::e2);
Run Code Online (Sandbox Code Playgroud)