محتويات الدورة

iOS / Swift / قيم Swift وملكية SwiftUI / الدرس 5

النماذج والمسودات والتحقق

اجعل التحرير مرنا وأنشئ أوامر متحققا منها صراحة واحفظ العمل عند الفشل القابل للتعافي.

وقت القراءة التقريبي: 4 دقيقةتاريخ مراجعة المحتوى
في هذه الصفحة

أهداف الدرس

  • النموذج سير عمل للتحرير
  • تحقّق عند حد الأمر
  • أظهر مالك المسودة صراحة

النموذج سير عمل للتحرير

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

تحقّق عند حد الأمر

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

swift مقتطف توضيحي من Swift أو SwiftUI؛ يتطلب بيئة الأدوات المبيّنة.
import Foundation
func parseSeatDraft(_ text: String) -> Int? {
    let normalized = text.trimmingCharacters(in: .whitespacesAndNewlines)
    guard let value = Int(normalized), (1...20).contains(value) else { return nil }
    return value
}
print(parseSeatDraft(" 4 ") ?? -1)
print(parseSeatDraft("21") ?? -1)
الناتج المتوقع
4
-1

البديل يوضح فشل التحليل فقط. يحمل الأمر المقبول Int لا النص الأصلي أو قيمة رمزية.

أظهر مالك المسودة صراحة

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

swift مقتطف توضيحي من Swift أو SwiftUI؛ يتطلب بيئة الأدوات المبيّنة.
struct SeatForm: View {
    @State private var draft = ""
    @State private var accepted: Int?
    @State private var message = ""
    var body: some View {
        Form {
            TextField("Seats", text: $draft).keyboardType(.numberPad)
            Button("Preview") {
                guard let value = parseSeatDraft(draft) else {
                    message = "Enter 1 through 20 seats"; return
                }
                accepted = value; message = "Preview ready"
            }
            Text(message)
            if let accepted { Text("Seats: \(accepted)") }
        }
    }
}
الناتج المتوقع
A valid draft 4 yields Preview ready and Seats: 4; invalid input displays the range message.

يتطلب SwiftUI والمحلّل السابق. لم تُشغّل لوحة مفاتيح أو محاكاة أو نموذج أثناء التأليف.

خطّط للتركيز كجزء من التصحيح

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

افصل أخطاء الحقول من النتائج البعيدة

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

تحقّق من التصحيح والإلغاء والتفعيل المتكرر

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

الأخطاء الشائعة وإصلاحها

تُعتبر اللوحة الرقمية تحققا

لماذا يحدث؟
اعتُبر تلميح الإدخال ضمانا للمجال.
كيف تصلحه؟
حلّل الأمر وافحص نطاقه صراحة.
كيف تتجنب تكراره؟
أدرج نصا معيبا ملصوقا في الاختبارات.

يمحو فشل الحفظ المسودة

لماذا يحدث؟
صُفّرت حالة التحرير قبل تأكيد النجاح.
كيف تصلحه؟
احفظ المسودة حتى النجاح أو الإلغاء المقصود.
كيف تتجنب تكراره؟
اختبر الرفض والنتائج البعيدة غير المؤكدة.

لا يعيد الإلغاء البيانات الأصلية

لماذا يحدث؟
حرر النموذج البيانات المشتركة المعتمدة مباشرة.
كيف تصلحه؟
استخدم مسودة مستقلة وأمر اعتماد صريحا.
كيف تتجنب تكراره؟
حدّد دلالات الحفظ والإلغاء قبل الربط.

اختبر فهمك

1. هل تعرض رسالة الخطأ استثناء الخادم كاملا؟

اعرض الحل المشروح

لا. حوّل فئة فشل مستقرة إلى شرح مترجم مفيد مع حفظ تشخيص آمن عبر تسجيل مراجع. قد تكشف الاستثناءات الخام التفاصيل الداخلية ولا تشرح التعافي غالبا. افصل هوية الحقل عن تسميته المترجمة.

2. ماذا يحدث عند تفعيل Preview بالقيمة 21 بعد نجاح 4؟

اعرض الحل المشروح

يظهر خطأ النطاق وتبقى المعاينة المقبولة 4 وفق العقد المعروض. وإذا أراد المنتج إخفاء المعاينة أثناء التحرير فنمذج ذلك صراحة. لا يجوز أن يصبح فشل التحليل 21 مقبولة أو تتحول بصمت إلى 20.

أهم ما تعلمته

  • النموذج سير عمل للتحرير
  • تحقّق من التصحيح والإلغاء والتفعيل المتكرر

المراجع الرسمية