• Open Menu Close Menu
  • Apple
  • Shopping Bag
  • Apple
  • Mac
  • iPad
  • iPhone
  • Watch
  • TV
  • Music
  • Support
  • Search apple.com
  • Shopping Bag

Lists

Open Menu Close Menu
  • Terms and Conditions
  • Lists hosted on this site
  • Email the Postmaster
  • Tips for posting to public mailing lists
Re: Quastion about types in a NSPasteBoard
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

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

  • Follow-Ups:
    • Re: Quastion about types in a NSPasteBoard
      • From: Gustavo Pizano <email@hidden>
References: 
 >Quastion about types in a NSPasteBoard (From: Gustavo Pizano <email@hidden>)
 >Re: Quastion about types in a NSPasteBoard (From: Graham Cox <email@hidden>)
 >Re: Quastion about types in a NSPasteBoard (From: Gustavo Pizano <email@hidden>)

  • Prev by Date: Re: Additional action when a view's value changes (Cocoa Bindings)
  • Next by Date: Re: Quastion about types in a NSPasteBoard
  • Previous by thread: Re: Quastion about types in a NSPasteBoard
  • Next by thread: Re: Quastion about types in a NSPasteBoard
  • Index(es):
    • Date
    • Thread