هل من الممكن نسخ متشائم مختلفة في تطبيق رمز الحزمة الحكيمة؟

StackOverflow https://stackoverflow.com/questions/1136166

سؤال

سؤالي مذكور أعلاه في العنوان ولكن سأكتبه هنا مرة أخرى

هل من الممكن نسخ متشائم مختلفة في تطبيق رمز الحزمة الحكيمة؟

هذا في الواقع يرتبط قليلا على سؤالي السابق؛ إنشاء قائمة عقار القاموس برمجيا

ولكن بما أنني أستطيع كتابة المعطر (والاختبار إذا كنت أفعل شيئا خاطئا) كنت أتساءل عما إذا كان بإمكاني نسخ ملف مكتوبي

[testBook writeTofile:@/Users/jack/testbook2.plist" atomically:NO];

إلى حزمة طلبي في الرمز (بحيث يمكن أن تقرأ من هنا مع NSString *path = [[NSBundle mainBundle] bundlePath]; NSString *dataPath = [path stringbyAppendingPathcomponent:@"testbook2.plist"];

بديل آخر هو جيد أيضا على سبيل المثال إذا كان بإمكاني قراءة بلدي المتخصص مباشرة من مسار آخر بدلا من الصفحة الرئيسية

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

المحلول

جسديا، نعم هو ممكن في بعض الأحيان.

لا، لا تفعل ذلك !!

حسنا ... نسخ الاشياء في حزمة التطبيق الخاصة بك سيئة، حزمة التطبيق الخاصة بك ليست المكان الذي تحتفظ فيه الإعدادات أو البيانات. يجب أن تفكر في حزمة التطبيق الخاصة بك ككائن. يجب عليك القيام بذلك لعدة أسباب:

  1. في حين أن معظم الوقت للمستخدم على نظام Mac OS X لديه إذن بالكتابة إلى تطبيق في بعض الأحيان لا يفعلون ذلك. فكر في الأطفال الذين لا يستخدمون حسابات المسؤولين أو نشر المختبر في المدارس.
  2. سوف يبطل الرصوف. إذا قمت بالتوقيع على التطبيق الخاص بك، فسيؤدي ذلك إلى تغيير هذا التوقيع وكسر CODESIGN، مما تسبب في كل أنواع المشكلات الغريبة (فقدان أي أذونات جدار الحماية يحتوي التطبيق، ويخبر المستخدم بتغيير التطبيق وتطلب منهم إذن المفاتيح مرة أخرى، إلخ). في المستقبل، قد ينبثق هذا أيضا كل أنواع التحذيرات منذ العبث مع التطبيق هو العلم الأحمر الأمن الكبير.
  3. لن تعمل على iPhone. قد لا تكون التي قد لا تكون مشكلة، ولكن إذا كنت تعتزم استخدام هذا الرمز على iPhone حزم التطبيقات Randoonly Readonly

المكان الصحيح لوضع هذا النوع من الأشياء في مجلد فرعي لمجلد دعم التطبيق

نصائح أخرى

لا أعرف بالضبط ما تفعله، ولكن اعتمادا على طلبك، قد ترغب في استخدام دليل دعم التطبيق:

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSApplicationSupportDirectory, NSUserDomainMask, YES);
if ([paths count] > 0) {
    NSString *path = [[paths objectAtIndex:0] stringByAppendingPathComponent:@"App Name"];
    // Create the directory if it doesn't exist, etc.
} else {
    NSLog(@"Fail!");
    // ...
}
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top