2012-04-21 16 views
9

में 2 अलग-अलग फ़ाइलों के रूप में दिखा रहा है मेरे पास एक ऐसा ऐप है जो UIDocument का उपयोग करता है जो NSFileWrapper आधारित है। मेरी फ़ाइल रैपर दो उप-फाइल "photo.data" और "photo.metadata" के साथ "XXX.cp" नाम की एक निर्देशिका है। यह बचाने के लिए और लोड दस्तावेजों ठीक है, तथापि \ भंडारण \ अज्ञात प्रबंधित जब मैं सेटिंग पर जाएं लगता उप फ़ाइलों को अलग से सूचीबद्ध हैं:iCloud और NSFileWrapper: सेटिंग्स

Settings

मैं इसे उम्मीद कर रहा था "XXX.cp" दिखाने के बजाय करने के लिए इन दो उप-फाइलें। मुझे लगता है मैं दस्तावेज़ यूटीआई की स्थापना की और ठीक से निर्यात किया है:

UTI UTI Export

और मुझे लगता है मैं सही ढंग से फ़ाइल रैपर बनाने हूँ (विशेष रूप से के बाद से इसे पढ़ता है/ठीक लिखते हैं):

- (void)encodeObject:(id<NSCoding>)object toWrappers:(NSMutableDictionary *)wrappers preferredFilename:(NSString *)preferredFilename {  
    @autoreleasepool {     
     NSMutableData * data = [NSMutableData data];  
     NSKeyedArchiver * archiver = [[NSKeyedArchiver alloc] initForWritingWithMutableData:data];  
     [archiver encodeObject:object forKey:@"data"];  
     [archiver finishEncoding]; 
     NSFileWrapper * wrapper = [[NSFileWrapper alloc] initRegularFileWithContents:data];  
     [wrappers setObject:wrapper forKey:preferredFilename];  
    }  
}   

- (id)contentsForType:(NSString *)typeName error:(NSError *__autoreleasing *)outError {   
    if (self.captionedPhotoMetadata == nil || self.captionedPhoto == nil) {  
     *outError = [[NSError alloc] initWithDomain:CaptionedPhotoErrorDomain code:CaptionedPhotoInvalidDocument userInfo:[NSDictionary dictionaryWithObjectsAndKeys:NSLocalizedString(@"Invalid document!", @""), NSLocalizedDescriptionKey, nil]];  
     return nil;   
    }  
    NSMutableDictionary * wrappers = [NSMutableDictionary dictionary];  
    [self encodeObject:self.captionedPhotoMetadata toWrappers:wrappers preferredFilename:METADATA_FILENAME];  
    [self encodeObject:self.captionedPhoto toWrappers:wrappers preferredFilename:DATA_FILENAME];  
    NSFileWrapper * fileWrapper = [[NSFileWrapper alloc] initDirectoryWithFileWrappers:wrappers];  
    return fileWrapper;   
} 

लेकिन अभी भी कोई सिगार नहीं है। समस्या क्या है क्याकिसी को पता हैं? धन्यवाद!

उत्तर

4

यह पता लगाया। समस्या यह थी कि आपको 3 अक्षरों का फ़ाइल नाम एक्सटेंशन होना चाहिए। मेरे पास केवल 2 अक्षर थे: ".cp"। मैंने इसे ".cap" पर स्विच किया और यह काम किया: पी

+0

मुझे यह समस्या भी मिली है और मेरे पास मेरे फ़ाइल एक्सटेंशन के लिए 3 अक्षर हैं। मैं अपनी निर्देशिका आधारित फ़ाइल रैपर के लिए एक्सटेंशन .tfx का उपयोग करता हूं। मैंने हाल ही में अपने रैपर फ़ाइलों को अपने सर्वव्यापी कंटेनर में एक अलग फ़ोल्डर में डालने का निर्णय लिया है जिसे मैं सिंक दस्तावेज़ कहते हैं। इस तरह व्यक्तिगत फाइलें उपयोगकर्ता के लिए दिखाई नहीं देती हैं। लेकिन यह वही है जो मैं वास्तव में चाहता हूं क्योंकि मेरी यूआईडी दस्तावेज सबक्लास फाइलें उपयोगकर्ताओं के लिए सीधे बातचीत करने के लिए नहीं हैं। –

+0

मेरे पास बिल्कुल एक ही समस्या है, लेकिन मेरे फ़ाइल एक्सटेंशन में तीन अक्षर हैं (और एक आइकन)। मुझे लगता है कि निर्यातित यूटीआई में यह कुछ ख़राब सेटिंग है। मेरा झुकाव यह है कि iCloud में कुछ प्रकार की कैशिंग चल रही है और यह कि .cp से .cap से एक्सटेंशन को बदल रहा है जो टूट गया था। – auco

+0

हे रे आपके ट्यूटोरियल से प्यार करता है, लेकिन मुझे अभी भी कोई समस्या है। मैं अपने रैपर को पैकेज के रूप में दिखाने के लिए प्राप्त कर सकता हूं लेकिन फिर मेरा nsmetadataquery उन्हें नहीं देखता है। यदि मैं * के साथ सभी दस्तावेजों को खोजता हूं तो ईवेंट नहीं। मेरा पहला दस्तावेज़ प्रकार काम करता है, लेकिन मेरी छवियां – zambono

1

मैंने अपने यूटीआई को तीन वर्णों में नहीं बदला। यह 11 अक्षर बना हुआ है। सबसे पहले मैं एक ही मुद्दा देख रहा था रे रे रिपोर्टिंग कर रहा है। मैंने दस्तावेज में और अधिक देखा और "आईओएस ऐप प्रोग्रामिंग गाइड" - "ऐप से संबंधित संसाधन" के अनुच्छेद के तहत "ऐप से संबंधित संसाधन" में पाया गया है, "प्रत्येक दस्तावेज़ प्रकार के लिए आपको निम्न जानकारी निम्न पर प्रदान करनी होगी:

  • एक नाम
  • एक आइकन
  • फ़ाइल प्रकारों

मैं एक नाम और फ़ाइल प्रकारों, लेकिन नहीं एक आइकन मुहैया कराई थी। इसलिए मैं सबसे भयानक थोड़ा दस्तावेज़ आइकन मार पड़ी है मैं 22 सेकंड में कर सकता था, इसे मेरे प्रोजेक्ट में जोड़ा, इसे टार्ज में जोड़ा टी के दस्तावेज़ प्रकार, और मेरे आईपैड पर, सेटिंग्स, iCloud, स्टोरेज प्रबंधित करें, MyApp, मुझे केवल फ़ाइल रैपर नाम, NSMetadataItemDisplayNameKey शैली दिखाई देती है!

0

मुझे एक ही समस्या थी, लेकिन मेरे विस्तार में तीन वर्ण थे और मेरे पास एक आइकन भी था। हालांकि, this comment पढ़ने के बाद, मैंने LSItemContentTypesCFPundleDocumentTypes सेक्शन ("प्रकार: com.razeware.captionedPhoto" को "दस्तावेज़ प्रकारों" के अंतर्गत दूसरी छवि में हटाने का प्रयास किया) और यह काम किया।

मैंने यह भी देखा कि डब्ल्यूडब्ल्यूडीसी डेमो "यूआईडी दस्तावेज और आईक्लाउड" में कोई एलएसआईटीमकंटेंट टाइप भी नहीं है। मुझे एक बड़ी बग की तरह लगता है, the docs स्पष्ट रूप से बताता है कि दस्तावेज़ प्रकार होना चाहिए।

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