سؤال

أنا أستخدم SQLite كمسافة بيانات في تطبيق iPhone. لدي سؤالان يتعلق بترقيات التطبيق.

1.) البيانات هي كل التكوين / غير القانوني. وهذا يعني، إنه لأول مرة. عندما أقوم بتحديث / إضافة بيانات التكوين، سأصدر ترقية للتطبيق. عندما يحصل المستخدم على تطبيق iPhone محدث، هل يتم إلغاء تثبيت الأصلي؟ إذا كان هذا هو الحال، فأنا موافق لأن بيانات تكوين DB الجديدة سيتم نشرها. إذا لم يكن الأمر كذلك، كيف يمكنني استبدال البيانات؟

2.) البيانات هي التكوين والمعاملات. وهذا يعني أن المستخدم يمكنه حفظ البيانات في DB. عندما ترقيات المستخدم إلى إصدار جديد من التطبيق، أريد الحفاظ على بياناتها الحالية ولكن استبدال جميع بيانات التكوين. أنا أظن أنني سأحتاج إلى إدراج وتحديث البرامج النصية المخزنة داخل التطبيق لإنجاز هذا. ما هي طريقة فعالة للذهاب حول هذا الموضوع؟

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

المحلول

وصف CDSpinosa السيناريو # 1 جيدا، لذلك سوف أتناول # 2.

لم أفعل ذلك على iPhone بعد، ولكن على بيئة سطح المكتب أسهل طريقة للتعامل مع هذا هو الحفاظ على بيانات التكوين الخاصة بك في قاعدة بيانات منفصلة. يمكنك إرفاق قواعد بيانات متعددة بسهولة. ابدأ بفتح قاعدة البيانات الرئيسية الخاصة بك، والتي ربما تكون قاعدة البيانات التي يمكن أن تتغير. ثم sqlite3_exec أ ATTACH بيان، الذي يبدو وكأنه هذا:

ATTACH 'filepath' AS config;

من ذلك الحين، يمكنك أن تفعل شيئا مثل هذا:

SELECT * FROM UserTableName;
SELECT * FROM config.ConfigurationTableName;

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

(يمكنك، بالطبع، استخدم SQL ونسخ القيم من قاعدة بيانات واحدة إلى أخرى. ولكن إذا كنت تقوم بالفعل بنسخ قاعدة بيانات التكوين بأكملها إلى Sandbox ... ويجب أن تكون ... ثم هذه مجرد خطوة إضافية. مجرد إرفاق.)

آمل أن يوفر لك شخص آخر مزيدا من التفاصيل. :)

نصائح أخرى

عندما يقوم المستخدم بترقية التطبيق، يتم إلغاء تثبيت حزمة التطبيق القديمة وتم تثبيت حزمة التطبيق الجديدة، ولكن بيانات المستخدم المرتبطة باقة التطبيق هي سليمة.

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

سأترك # 2 إلى شخص ذو مطلع على SQLite، ولكن قد ترغب في استخدام علامة "SQLite" بدلا من علامة "MySQL" إذا كان هذا ما تفعله بالفعل.

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