2008-09-10 4 views
5

क्या स्रोत एप्लिकेशन विशेष रूप से घोषित किए जाने के लिए एनएसपीएस्टबोर्ड को unfilter करने का कोई तरीका है?एनएसपीस्टबोर्ड को अनफ़िल्टरिंग

मैं अपने आवेदन में पेस्टबोर्ड डेटा को क्रमबद्ध करने का प्रयास कर रहा हूं। जब कोई अन्य एप्लिकेशन पेस्टबोर्ड पर एक आरटीएफ फ़ाइल रखता है और फिर मैं उपलब्ध प्रकारों के लिए पूछता हूं, तो मुझे आरटीएफ के ग्यारह अलग-अलग स्वाद मिलते हैं, मूल आरटीएफ से लेकर सादा स्ट्रिंग्स तक सब कुछ। * मान।

डिस्क पर एक प्लेस्ट या कच्चे डेटा में उस डेटा को सहेजना आमतौर पर एक समस्या नहीं है क्योंकि यह बहुत छोटा है, लेकिन जब पेस्टबोर्ड पर किसी भी बड़े आकार की छवि रखी जाती है, तो परिणामस्वरूप आउटपुट कई बार हो सकता है स्रोत डेटा से बड़ा (फ़िल्टरिंग के माध्यम से टीआईएफएफ और पीआईसीटी डेटा के कई स्वादों के साथ उपलब्ध कराया जा रहा है)।

मैं संभवतः यदि संभव हो तो मूल ऐप उपलब्ध कराने में सक्षम होना चाहता हूं।


जॉन, आप कहीं अधिक अपने आप को या सज्जन मैं कौन मैक प्रोग्रामिंग कर रहा है के बाद से डायनासोर पृथ्वी पर घूमा करते थे के साथ काम से चौकस हैं। हम में से किसी ने कभी भी आपके द्वारा हाइलाइट किए गए पाठ को नहीं देखा ... और मुझे कोई सुराग नहीं है। स्पष्ट रूप से समस्या पर बहुत लंबा शुरू करना।

और जब मैंने आपके उत्तर को सही उत्तर के रूप में स्वीकार किया, तो यह वास्तव में मेरे मूल प्रश्न का उत्तर नहीं देता है। जो मैं खोज रहा था वह स्वादों की पहचान करने का एक तरीका था जो उन्हें पेस्टबोर्ड और पर रखकर अन्य स्वादों को आसानी से प्रदाता द्वारा प्रदान किए जाने वाले अन्य प्रकारों को जानने के लिए अन्य स्वाद बन सकता है। प्रकार की सूची चलते समय मुझे उन्हें प्रदान किए गए एप्लिकेशन के लिए पसंदीदा ऑर्डर मिलेगा, यह मुझे नहीं बताएगा कि मैं सुरक्षित रूप से अनदेखा कर सकता हूं क्योंकि जब मैं पेस्टबोर्ड को फिर से भरता हूं तो उन्हें फिर से बनाया जाएगा।

मैं इस निष्कर्ष पर आया हूं कि ऐसा करने के लिए "अच्छा" तरीका नहीं है। [NSPasteboard declaredTypesFromOwner] शानदार होगा, लेकिन यह अस्तित्व में नहीं है।

उत्तर

4

-[NSPasteboard types] क्लिपबोर्ड पर डेटा लिए सभी उपलब्ध प्रकार वापस आ जाएगी, लेकिन यह उन्हें "in the order they were declared."

लौटना चाहिए

-[NSPasteboard declareTypes:owner:] के लिए दस्तावेज़ का कहना है कि "the types should be ordered according to the preference of the source application."

एक ठीक से लागू पेस्टबोर्ड मालिक चाहिए, इसलिए, की घोषणा सामग्री के सबसे अमीर प्रतिनिधित्व (शायद मूल सामग्री) पहले प्रकार के रूप में; इसलिए एक उचित एक प्रतिनिधित्व होना चाहिए:

[pb dataForType:[[pb types] objectAtIndex:0]] 
0

आप +[NSPasteboard typesFilterableTo:] से बाहर कुछ का उपयोग प्राप्त करने में सक्षम हो सकता है। मैं इस तरह एक टुकड़ा चित्र हूँ:

NSArray *allTypes = [pb types]; 
NSAssert([allTypes count] > 0, @"expected at least one type"); 

// We always require the first declared type, as a starting point. 
NSMutableSet *requiredTypes = [NSMutableSet setWithObject:[allTypes objectAtIndex:0]]; 

for (NSUInteger index = 1; index < [allTypes count]; index++) { 
    NSString *aType = [allTypes objectAtIndex:index]; 
    NSSet *filtersFrom = [NSSet setWithArray:[NSPasteboard typesFilterableTo:aType]]; 

    // If this type can't be re-created with a filter we already use, add it to the 
    // set of required types. 
    if (![requiredTypes intersectsSet:filtersFrom]) 
     [requiredTypes addObject:aType]; 
} 

मुझे यकीन है कि कैसे प्रभावी यह अच्छी प्रकार उठा पर फिर भी हो सकता है, नहीं हूँ।

संबंधित मुद्दे