nsfileManager fileexistaspath: تعطل مع sigabrt على iOS4.1 ، لماذا؟
-
25-09-2019 - |
سؤال
هنا هو الرمز الذي أستخدمه:
NSFileManager* defaultMgr = [NSFileManager defaultManager];
if (![defaultMgr fileExistsAtPath:path]) {
return nil;
}
حيث يكون المسار عنوان URL إلى ملف على النظام مثل: "ملف: // localhost/private/var/mobile/applications/blahblahblah"
هذا يتعطل مع SIGABRT عندما يتم الاتصال إلى FileExistAtatpath:. الملف موجود ، وربما لا يفضل تنسيق السلسلة ما تفضله هذه الطريقة ، ولكن يجب أن يعود فقط. يعد هذا الرمز جزءًا من مكتبة شائعة جدًا ، وعلى الرغم من أنني لست بحاجة إلى التحقق من وجود المسار ، إلا أنني أريد حقًا أن أفهم ما يحدث هنا ، في حال كنت بحاجة إلى استخدام هذه الطريقة مباشرةً.
خصوصا:
- هل يستخدم مؤلف المكتبة هذه الطريقة بشكل صحيح؟
- كيف يمكن للمرء أن يصطاد أو يتوقع استثناء من هذه الطريقة؟
(لا تناقش مستندات SDK الاستثناءات التي يمكن إلقاؤها بهذه الطريقة.) - هل هذا خطأ يجب أن أبلغه إلى Apple؟
التفاصيل الأخرى: أقوم بتشغيل هذا على جهاز iPhone 4 مع iOS 4.1
المحلول
بعض القضايا تتبادر إلى الذهن:
1) يعمل NSFileManager مع مسارات وليس عناوين URL. لا حاجة إلى "ملف: //".
2) يحتاج إلى nsstrings مثل @"...".
3) يجب أن تحاول أن تبقيك على FilePaths داخل صندوق الرمل الخاص بالتطبيق.