فشل، ولكن لم يتم إرجاع كائن خطأ. لماذا ا؟
-
13-09-2019 - |
سؤال
أحاول فهم معنى القيمة التي تم إرجاعها nsdata writetofile: الخيارات: خطأ:. وبعد تقوم الطريقة بإرجاع BOOL، والتي وفقا لتوثيق Apple "نعم إذا نجحت العملية، أو غير ذلك".
عادلة بما فيه الكفاية، ولكن إذا لم يكن الأمر كذلك، فسوف أفترض أن معلمة الخطأ سيتم بعد ذلك تعيينها إلى قيمة NSError القابلة للاسترجاع *. ولكن في النتائج التي أقوم بها، هذا ليس هو الحال. وفقا لذلك أنا مرتبك إلى حد ما، ولا أعرف كيفية تحديد ما تسبب في الفشل.
إلى الطرافة، لدي هذا الرمز (أكثر أو أقل):
NSError* error = nil;
BOOL success = [data writeToFile: filePath error: &error];
if ( error )
NSLog( @"error = %@", [error description] );
success
تبين أن NO
في التعليمات البرمجية، لكن NSLog
البيان لم يتم تنفيذها أبدا. كيف ذلك؟
هوارد
المحلول
من الممكن ذلك data
يكون nil
, ، في أي حالة [data writeToFile:error:]
عائدات nil
, ، لكن *error
لم يتم تعيين.
نصائح أخرى
ترجع طريقة WritetoFile صحيحة حول النجاح وكاذبة على الفشل - هذا ما تريد التحقق منه بالفعل.
لذا حاول:
if(!success)
كشرط الخاص بك بدلا من إذا (خطأ).