سؤال

لقد لاحظت أن Apple بدأت في استخدام أرشيفات مضغوطة لاستبدال حزم المستندات (المجلدات التي تظهر كملف واحد في Finder) في تطبيقات iWork.أفكر في فعل الشيء نفسه لأنني أتلقى رسائل الدعم عبر البريد الإلكتروني المتعلقة بتلف حزم المستندات الخاصة بي عند نسخها إلى خادم ملفات Windows.

أسئلتي هي ما هي أفضل طريقة للقيام بذلك في تطبيق يستند إلى NSDocument؟

أعتقد أن الطريقة الأسهل هي إنشاء غلاف ملف دليل وإنشاء أرشيف له وإعادته في ملف NSDocument

- (NSFileWrapper *)fileWrapperOfType:(NSString *)typeName error:(NSError **)outError

لكنني لا أفهم كيفية إنشاء أرشيف مضغوط لـ NSFileWrapper.

هل كانت مفيدة؟

المحلول

إذا كنت ترغب فقط في جعل ملف مضغوط الشكل الخاص بك (على سبيل المثال، "mydoc.myextension" هو في الواقع ملف مضغوط)، وليس هناك مريحة، الذي بني في آلية الكاكاو لخلق الرمز البريدي المحفوظات مع رمز. نلقي نظرة على هذا المشروع مدونة جوجل: ziparchive لا أعتقد مجمع ملف إرادة مساعدة في هذه الحالة، وإن كان.

وبما أنك استشهدت ورك، وأنا لا ورك ليس الخاصة 09، ولكن الإصدارات السابقة استخدام تنسيق الحزمة (أي أن NSFileWrapper تكون مثالية)، ولكن الرمز البريدي XML التي تصف بنية الوثيقة، مع الحفاظ إرفاق ملفات (مثل وسائل الإعلام جزءا لا يتجزأ، صور ، وما إلى ذلك) في مجلد الموارد، وكل ذلك ضمن الحزمة. وأفترض أنهم يفعلون ذلك لXML يمكن أن تكون كبيرة جدا بالنسبة الكبيرة وثائق معقدة، ولكن الكمادات بشكل جيد جدا لأن النص الذي و. هذه النتائج في وثيقة أصغر بشكل عام.

إذا أبل بالفعل انتقلت إلى جعل المستند بأكمله واحدة أرشيف مضغوط كبير (والذي أود أن تجد الغريب)، وكانوا إما أن استخراج الموارد اللازمة لمكان المجلد المؤقت Temp أو تحميل كل شيء في الذاكرة (خطوة إلى الوراء من على النهج القائم على الحزمة، IMO). هذه هي الاعتبارات عليك أن تأخذ في الاعتبار كذلك.

نصائح أخرى

ستحتاج إلى أخذ البيانات من غلاف الملف وإدخالها في شيء مثل com.ziparchive.

وبيار-اوليفييه لاتور وقد كتب امتدادا لNSData التي تتعامل مع ضغط الرمز البريدي. يمكنك الحصول عليه هنا: http://code.google.com/p/polkit/

وأنا أعلم أن هذا هو وقت متأخر قليلا إلى طرف لكنني اعتقدت أن توفر ما يصل حلقة أخرى يمكن أن تساعد أي شخص أن يأتي عبر هذا المنصب.

ويبدو أن عينة ZipBrowser من أبل سيكون بداية جيدة <في أ href = "http://developer.apple.com/library/mac/#samplecode/ZipBrowser/Introduction/Intro.html" يختلط = "نوفولو" > http://developer.apple.com/library/mac/#samplecode/ZipBrowser/Introduction/Intro.html

وHTH

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top