سؤال

كيف يمكنني إنشاء وكتابة إلى ملف في تطبيق iPhone Monotouch؟

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

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

المحلول

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

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

كل تطبيق iPhone (وسترى نفس الشيء للتطبيقات على نظام التشغيل OS X) هو "حزمة" غير قابلة للتنفيذ بالمعنى التقليدي، ولكن في الواقع تسلسل هرمي مجلد بداخل حياتك الثنائية (جنبا إلى جنب مع الموارد ، الإعدادات، إلخ).

بسبب كيفية تطبيق تطبيقات iPhone Uber-Sandboxed، ليس لديك حق الوصول إلى المجلدات المشتركة، وعادة ما تكون قادرا على استخدامها عند القيام بتطوير سطح المكتب (وجود، على سبيل المثال، مجلد مستندات مشتركة يعيش ضمن المجلد الرئيسي للمستخدم ل التطبيقات التي يمكن الوصول إليها).

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

أسهل طريقة لمعرفة ما يبدو هيكل مجلد التطبيق الخاص بك على الهاتف هو إلقاء نظرة على المجلد يستخدم iPhone Simulator لاستخدامات التطبيقات، الإعدادات، بلاه بلاه بلاه. على جهازي (لا أتذكر ما إذا كان هذا أمرا قابل للتكوين، ولكن ربما يكون ذلك هو نفسه على نظامك)، يمكنك الوصول إلى المجلد بواسطة هذا المسار:

~/Library/Application Support/iPhone Simulator

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

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

مع Monotouch، يمكنك الحصول على مسار مجلد مستندات التطبيق الخاص بك مع Environment.GetFolderPath(Environment.SpecialFolder.Personal);

إذا كنت ترغب في اختبارها، فهذا رمز بسيط للغاية يكتمل ملف يسمى "Out.txt" إلى مجلد "المستندات". يقرأ هذا الرمز أيضا محتويات الملف لإظهار أنه تم إنشاؤه - لمزيد من التحقق، انتقل إلى مجلد تطبيقات Simulator، فرز مجلدات التطبيق حسب التاريخ الذي تم تعديله، والانتقال إلى أسفل إلى آخر تعديل، وإلقاء نظرة داخل المستندات مجلد - ستجد "Out.txt" (لا يمكنك العثور على مجلد التطبيق الخاص بك بالاسم لأنه، عند تثبيت تطبيقك، يتم محشوة داخل مجلد باسم مع اسم مثل "2B3CA854-FADB-4DDC-9732-0E61B3DD8D8D8C "- فرز المجلدات بحلول التاريخ الذي تم تعديله، وسوف يشيرك إلى التطبيق الأكثر تعديل مؤخرا، والتي، في هذه الحالة، هو ما يحتوي التطبيق على التعليمات البرمجية التالية):

// For this to function, don't forget "using System.IO;"

// If you're just playing around with this to see it work, place it inside
// your AppDelegate's "FinishedLaunching" method in main.cs

string path = Environment.GetFolderPath (Environment.SpecialFolder.Personal);
string filePath = Path.Combine(path, "out.txt");

// File.WriteAllText will create a file and then write text to it. If the
// file already exists, File.WriteAllText will overwrite it.
File.WriteAllText(filePath, "Howdy, world.");

// Now we prove it worked by reading the contents of the file and then
// printing them to the console...   
string text = File.ReadAllText(filePath);
Console.WriteLine(text);

لذا، فإن الشيء الوحيد هنا هو حقا محددة iPhone مع العلم أن "البيئة. SpecialFolder.Personal" عبر الإنترنت إلى مجلد مستندات التطبيق. وراء ذلك، إنه كالمعتاد.

ومرة أخرى، ربما كان هذا أكثر مبالا، لكنني أردت الإجابة بدقة بما فيه الكفاية للجميع الذي يراه - آمل أن يساعد هذا :)

نصائح أخرى

ما يلي كيفية من موقع دليل Xamarin.ios يحتوي على عدد قليل من المؤشرات إلى مكان تخزين ملفاتك:

http://docs.xamarin.com/guides/ios/application_fundamentals/working_with_the_file_system/

يمكنك أن تفعل شيئا مثل هذا في وقت التشغيل:

using (StreamWriter writer = new StreamWriter (Path.Combine (Environment.SpecialFolders.Documents, "yourfilename.ext"))) { }

وهذا سيخلق الملف. لفتحه للقراءة، استخدم نفسه Path.Combine() ولكن مع streamreader..

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