سؤال

أحاول فهم معنى القيمة التي تم إرجاعها 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)

كشرط الخاص بك بدلا من إذا (خطأ).

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