技能 swiftui-expert-skill
📱

swiftui-expert-skill

安全

أنشئ تطبيقات SwiftUI حديثة باستخدام أفضل الممارسات الاحترافية

也可从以下获取: avdlee

يواجه مطورو SwiftUI صعوبات مع تعقيدات إدارة الحالة وأنماط APIs الموقوفة. تقدم هذه المهارة إرشادات قائمة على الحقائق لتطوير SwiftUI الحديث باستخدام @Observable، وتكوين العروض الصحيح، وتنسيق Liquid Glass لنظام iOS 26+.

支持: Claude Codex Code(CC)
🥉 74 青铜
1

下载技能 ZIP

2

在 Claude 中上传

前往 设置 → 功能 → 技能 → 上传技能

3

开启并开始使用

测试它

正在使用“swiftui-expert-skill”。 Review this view: struct ProductView: View { @StateObject var vm: ProductViewModel; var body: some View { Text(vm.title) } }

预期结果:

تم العثور على مشاكل: (1) استخدام @StateObject مع ObservableObject - فضّل @Observable class مع @State للكود الجديد. (2) يجب أن يكون StateObject private. (3) فكر في تمرير title كمعامل let إذا كان للقراءة فقط. الموصى به: استخدم @Observable class، وعلّم @State كـ private، ومرّر القيم للقراءة فقط مباشرة.

正在使用“swiftui-expert-skill”。 How do I handle navigation to a detail view when tapping a list row?

预期结果:

استخدم NavigationStack مع navigationDestination للتنوع الآمن عند وقت التجميع. استبدل NavigationView بـ NavigationStack عند الجذر. استخدم NavigationLink مع معامل value و modifier navigationDestination(for:). هذا يوفر أماناً عند وقت التجميع وإدارة حالة صحيحة مقارنة بأنماط NavigationView القديمة.

安全审计

安全
v1 • 2/25/2026

Static analyzer produced 226 false positive findings due to pattern matching on markdown documentation content. External command patterns matched file path references like 'references/state-management.md' and Swift code examples, not actual shell execution. Network finding was a GitHub source URL in YAML frontmatter. All blocker findings for cryptographic algorithms and system reconnaissance are incorrect pattern matches on documentation text. No executable code or security risks present.

1
已扫描文件
276
分析行数
0
发现项
1
审计总数
未发现安全问题
审计者: claude

质量评分

38
架构
100
可维护性
87
内容
50
社区
100
安全
91
规范符合性

你能构建什么

مطور iOS ينشئ ميزات جديدة

استخدم عند إنشاء SwiftUI views جديدة لضمان إدارة الحالة الصحيحة مع @Observable، واستخدام APIs حديثة مثل foregroundStyle() و NavigationStack، والبنية المثلى للعروض منذ البداية.

مراجعة الكود لمشاريع SwiftUI الموجودة

استخدم عند فحص كود SwiftUI القديم للتعرف على APIs الموقوفة، و property wrappers غير الصحيحة، ومشاكل الأداء المضادة، والفرص للتحديث.

تعلم أنماط SwiftUI الحديثة

استخدم عند الانتقال من UIKit أو SwiftUI القديم لتعلم أفضل الممارسات الحالية لتدفق البيانات، وتكوين العروض، وإرشادات تصميم Apple.

试试这些提示

مراجعة الكود الأساسية
راجع هذا الـ SwiftUI view للتأكد من إدارة الحالة الصحيحة واستخدام APIs الحديث. تحقق من اختيار property wrapper، و APIs الموقوفة، وأنماط تكوين العروض.
إعادة هيكلة الكود القديم
أعد هيكلة كود SwiftUI هذا لاستخدام APIs الحديثة. استبدل ObservableObject بـ @Observable، وحدّث المعدّلات الموقوفة، وحسّن بنية العرض للأداء.
تنفيذ ميزة جديدة
ساعدني في بناء ميزة SwiftUI جديدة بتدفق بيانات صحيح. صمّم إدارة الحالة باستخدام @Observable، ونظّم العروض للـ diffing الأمثل، وطبّق تنسيق iOS 26+ حيث يناسب.
تصحيح مشاكل الأداء
حلّل SwiftUI view هذا لمشاكل الأداء. حدد تحديثات الحالة غير الضرورية، ومشاكل هوية العرض في ForEach، وتحسينات hot path، وأسباب layout thrashing.

最佳实践

  • فضّل @Observable على ObservableObject لكل كود SwiftUI جديد مع @MainActor لأمان الخيوط
  • اجعل body العرض بسيطاً ونقياً - استخرج المنطق المعقد إلى النماذج والعروض الفرعية
  • استخدم هوية مستقرة في ForEach مع معرّفات فريدة، ولا تستخدم .indices للمحتوى الديناميكي أبداً

避免

  • تصريح القيم الممرّرة كـ @State أو @StateObject بدلاً من استخدام @Binding أو معاملات let
  • استخدام GeometryReader عندما توجد بدائل containerRelativeFrame أو visualEffect
  • إنشاء كائنات أو تنفيذ حوسبة ثقيلة مباشرة في body العرض

常见问题

هل يجب استخدام @Observable أم ObservableObject لمشاريع SwiftUI الجديدة؟
استخدم @Observable لكل الكود الجديد. يوفر مراقبة تلقائية بدون @Published، ويعمل مع الكائنات المتداخلة، ويتكامل مع Swift concurrency. استخدم ObservableObject فقط للحفاظ على الكود القديم.
متى يجب استخدام @Binding مقابل تمرير القيمة مباشرة؟
استخدم @Binding عندما يحتاج العرض الفرعي لتعديل حالة العرض الأب. استخدم let للقيم للقراءة فقط. إذا كنت بحاجة للتفاعلية مع التغييرات لكن بدون تعديل، استخدم var مع modifier .onChange().
هل تنسيق Liquid Glass مطلوب لتطبيقات iOS؟
لا، Liquid Glass متاح فقط على iOS 26+ ويجب اعتماده فقط عند الطلب صراحة. تقدم هذه المهارة أنماط fallback باستخدام .ultraThinMaterial لإصدارات iOS الأقدم.
لماذا يسبب ForEach الخاص بي crashes مع المصفوفات الديناميكية؟
استخدام .indices كـ هوية يفشل عندما يتغير ترتيب المصفوفة. استخدم دائماً معرّفات فريدة مستقرة مثل خاصية id. للمحتوى الديناميكي، تأكد من أن كل عنصر له هوية فريدة ومتسقة عبر التحديثات.
كيف أصحّح unexpected view re-renders في SwiftUI؟
أضف Self._printChanges() داخل body العرض لتسجيل ما سبب التحديثات. الأسباب الشائعة تشمل تمرير كائنات config كبيرة، تعيينات حالة زائدة، واعتماديات على قيم تتغير بشكل متكرر.
هل يمكن لهذه المهارة فرض معمارية محددة مثل MVVM؟
لا، تركّز هذه المهارة على الحقائق وأفضل الممارسات بدلاً من الآراء المعمارية. تشجّع على فصل منطق العمل لقابلية الاختبار لكن لا تفرض أنماطاً محددة مثل MVVM أو VIPER.

开发者详情

文件结构

📄 SKILL.md