nsfileManager fileexistaspath: تعطل مع sigabrt على iOS4.1 ، لماذا؟

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

  •  25-09-2019
  •  | 
  •  

سؤال

هنا هو الرمز الذي أستخدمه:

NSFileManager* defaultMgr = [NSFileManager defaultManager];
if (![defaultMgr fileExistsAtPath:path]) {
 return nil;
}

حيث يكون المسار عنوان URL إلى ملف على النظام مثل: "ملف: // localhost/private/var/mobile/applications/blahblahblah"

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

خصوصا:

  1. هل يستخدم مؤلف المكتبة هذه الطريقة بشكل صحيح؟
  2. كيف يمكن للمرء أن يصطاد أو يتوقع استثناء من هذه الطريقة؟
    (لا تناقش مستندات SDK الاستثناءات التي يمكن إلقاؤها بهذه الطريقة.)
  3. هل هذا خطأ يجب أن أبلغه إلى Apple؟

التفاصيل الأخرى: أقوم بتشغيل هذا على جهاز iPhone 4 مع iOS 4.1

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

المحلول

بعض القضايا تتبادر إلى الذهن:

1) يعمل NSFileManager مع مسارات وليس عناوين URL. لا حاجة إلى "ملف: //".

2) يحتاج إلى nsstrings مثل @"...".

3) يجب أن تحاول أن تبقيك على FilePaths داخل صندوق الرمل الخاص بالتطبيق.

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