我有一个自定义类,我希望能够放在粘贴板上。这是我到目前为止的代码
- (NSArray *)writableTypesForPasteboard:(NSPasteboard *)pasteboard {
static NSArray *writableTypes = nil;
if (!writableTypes) {
writableTypes=[NSArray arrayWithObjects:(NSString *)kUTTypeXML, nil];
}
return writableTypes;
}
- (id)pasteboardPropertyListForType:(NSString *)type {
return [NSKeyedArchiver archivedDataWithRootObject:[MyClass class]];
}
这部分不对:
- (id)pasteboardPropertyListForType:(NSString *)type {
return [NSKeyedArchiver archivedDataWithRootObject:[MyClass class]];
}
看起来您正在尝试存档实际的MyClass
类,实际上您应该在其中存档MyClass
对象,即MyClass
的特定实例而不是类本身。此外,您可能应该检查传入的类型,以确保为正确的事情提供数据。因此,它应该看起来像这样:
- (id)pasteboardPropertyListForType:(NSString *)type {
if ([type isEqualToString:kUTTypeXML]) {
return [NSKeyedArchiver archivedDataWithRootObject:self.someInstanceOfMyClass];
}
return nil;
}
最后,确保MyClass
实现了NSCoding
协议,以便您可以创建包含对象数据的存档。