Re: Quastion about types in a NSPasteBoard
Re: Quastion about types in a NSPasteBoard
- Subject: Re: Quastion about types in a NSPasteBoard
- From: Graham Cox <email@hidden>
- Date: Thu, 10 Dec 2009 23:08:38 +1100
On 10/12/2009, at 10:26 PM, Gustavo Pizano wrote:
> In fact the AbstractFactory has nothing to do with the NSPasteBoard. Im reading the NSPasteBoard in the NSViewController after it's view has recevied the performDropOperation:
Yes, but my point was that AbstractFactory is your code, and yours alone, so whether it will directly accept objects returned from the pasteboard's methods is known only to you, so it's not a question anybody else can answer.
> NSArray * types = [pb types];
> if([types containsObject:DefaultHorizontal]){
You shouldn't be looking for what types the pasteboard has like this. You should be asking it whether it has the types you want, in the order you want them, using -availableTypeFromArray:
Given those types something will have to map those to the classes your abstract factory makes. A bunch of if...else clauses is one way, but there smarter ways, like having a dictionary that maps type -> class.
e.g.
NSString* myType = [pb availableTypeFromArray:[NSArray arrayWithObjects:@"first_choice", @"second_choice", nil]];
Class theClass = [classMapDictionary objectForKey:myType];
if( theClass )
{
id object = [[theClass alloc] init];
}
If you are targeting 10.6 or later, the pasteboard supports multiple objects and there are new APIs to get them. But for 10.5 and earlier, the pasteboard can only hold one object, albeit in a different number of representations. If the data is private to your app, you can get around that by passing an array of objects in some fashion, but for data passed between apps, you're pretty much stuck with the standard types unless yours and the other app agree on some common protocol.
But to get back to your original post - anything you see on the pasteboard you don't recognise is none of your business - it's probably data private to the app where the drag started.
--Graham
_______________________________________________
Cocoa-dev mailing list (email@hidden)
Please do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com
Help/Unsubscribe/Update your Subscription:
This email sent to email@hidden