如何允许复制自定义项?

时间:2014-02-12 06:13:11

标签: objective-c cocoa copy-paste

我有一个我希望能够放在粘贴板上的自定义类。 这是我到目前为止的代码

- (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]];

}

1 个答案:

答案 0 :(得分:0)

这部分不对:

- (id)pasteboardPropertyListForType:(NSString *)type {
    return [NSKeyedArchiver archivedDataWithRootObject:[MyClass class]];
}

看起来您正在尝试归档实际的MyClass类,您应该在其中归档MyClass 对象,即{{1}的特定实例而不是类本身。此外,您应该检查传入的类型,以确保您提供正确的数据。所以,它应该看起来像:

MyClass

最后,确保- (id)pasteboardPropertyListForType:(NSString *)type { if ([type isEqualToString:kUTTypeXML]) { return [NSKeyedArchiver archivedDataWithRootObject:self.someInstanceOfMyClass]; } return nil; } 实现MyClass协议,以便您可以创建包含对象数据的存档。