كيفية استيراد الفصول الخاصة من مشروعك الخاص إلى ساحة اللعب

StackOverflow https://stackoverflow.com//questions/24045245

  •  21-12-2019
  •  | 
  •  

سؤال

افترض الإعداد مثل هذا:

  • لديك مشروع Xcode 6، حيث قمت بتنفيذ فئاتك الخاصة (على سبيل المثال MyView وMyViewController) باستخدام كل من Objective-C وSwift
  • لقد قمت بإضافة ملعب إلى مشروعك

في ساحة اللعب، من الممكن استيراد الوحدات النمطية (أطر العمل) مثل UIKit مع ال import الكلمة الرئيسية.كيف يمكنك تمكين الوصول إلى فئات المشروع الأخرى من ساحة اللعب؟

مجرد محاولة الوصول إلى فئات المشروع يؤدي مباشرةً إلى ظهور رسالة خطأ:استخدام المعرف الذي لم يتم حله "MyView"

هل كانت مفيدة؟

المحلول

اعتبارًا من الإصدار Xcode 6.0 Beta 5، أصبح من الممكن الآن استيراد أطر العمل الخاصة بك إلى الملعب.يوفر هذا طريقة لمشاركة التعليمات البرمجية بين تطبيقاتك وملاعبك، والتي يمكنها استيراد أطر العمل الخاصة بك.لفعل هذا:

  1. يجب أن يكون الملعب الخاص بك في نفس مساحة العمل مثل المشروع الذي ينتج إطار العمل الخاص بك.يجب أن تحتوي مساحة العمل الخاصة بك على هدف ينتج إطار العمل، بدلاً من استخدام إطار عمل تم إنشاؤه مسبقًا.

  2. يجب أن تكون قد قمت بالفعل ببناء الإطار الخاص بك.إذا كان إطار عمل iOS، فيجب تصميمه لوجهة تشغيل 64 بت (على سبيل المثال.iPhone 5s)، ويجب أن يكون مصممًا لجهاز المحاكاة.

  3. يجب أن يكون لديك مخطط نشط يقوم ببناء هدف واحد على الأقل (سيتم استخدام موقع بناء هذا الهدف في مسار بحث إطار العمل الخاص بالملعب).

  4. لا ينبغي تعيين تفضيل "موقع البناء" الخاص بك (في إعدادات "المواقع" المتقدمة في Xcode) على "قديم".

  5. إذا لم يكن إطار العمل الخاص بك عبارة عن إطار عمل Swift، فيجب ضبط إعداد إنشاء "وحدة التعريف" على "نعم".

  6. يجب عليك إضافة بيان استيراد إلى الملعب الخاص بك لإطار العمل.

بمجرد استيفاء جميع هذه الشروط، سيعمل استيراد إطار العمل الخاص بك في الملعب.

في Xcode 7، قدمنا ​​آلية أخرى يمكنك استخدامها لاستيراد فئاتك الخاصة كمصدر، بدلاً من استيراد إطار عمل؛يمكنك أن تقرأ عن دعم "المصادر المساعدة" هذا على http://help.apple.com/xcode/mac/8.0/#/devfa5bea3af

نصائح أخرى

لقد تمكنت بالفعل من الإشارة إلى ملفات Swift الأخرى في المشروع الحالي عن طريق القيام بذلك:

  • قم بإنشاء ساحة لعب فارغة ومكان ما في مكان ما ضمن مشروعك.
  • افتح ال YourPlayground.playground package (نعم، إنها حزمة = دليل) في الوحدة الطرفية.
  • يحرر contents.xcplayground على سبيل المثال مع vi وأضف قسمًا آخر مثل هذا:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<playground version='3.0' sdk='iphonesimulator'> 
   <sections>
       <code source-file-name='section-1.swift'/>
       <code source-file-name='section-2.swift'/>
   </sections>
   <timeline fileName='timeline.xctimeline'/>
</playground>
  • إعادة تسمية section-1.swift ل section-2.swift (إذا قمت بإنشاء ساحة اللعب من الصفر، فيجب أن يكون هناك مثال section-1.swift في حزمتك)
  • أضف الرابط الصعب (يبدو أن الرابط الرمزي لا يعمل) اسمه section-1.swift والتي ستشير خارج الحزمة إلى ملف فئة Swift الخاص بك مثل:
ln ../../Classes/MyView.swift section-1.swift
  • أغلق Xcode وافتح Playground مرة أخرى.
  • الآن يجب أن يكون هناك قسمان، أحدهما يحتوي على محتويات ملف فئة Swift الخاص بك والآخر يحتوي على محتوى المثال الذي حصلت عليه من إنشاء Playground من البداية.

بهذه الطريقة يمكنني بالفعل تشغيل التعليمات البرمجية الموجودة خارج Playground، ولكن يبدو أن Xcode يتعطل كثيرًا عند القيام بذلك بهذه الطريقة.

يحرر:

اعتبارًا من الإصدار التجريبي الخامس من Xcode 6، يمكنك الآن الرجوع إلى ملفات المشروع، كما يرشدك ريك بالارد في كتابه إجابة.

منذ الإصدار Beta 5 من Xcode 6، من الممكن استيراد التعليمات البرمجية الخاصة بك إذا كانت موجودة في إطار عمل.ما عليك القيام به هو إنشاء هدف إطاري، وإضافة ملفات Swift هناك وفي الملعب الخاص بك

import ModuleName

يمكنك البحث عن اسم الوحدة في إعدادات الإنشاء.عادة ما يكون نفس اسم الهدف.

تذكر أن تقوم بإنشاء الرمز الذي تريد رؤيته public.ستحتاج إلى إنشاء المشروع قبل أن تتوفر التغييرات في الملعب.(ستحتاج أيضًا إلى تعديل الملعب لبدء إعادة التنفيذ.)

مهم

لا تعطي ملف الملعب نفس اسم الهدف!إذا قمت بذلك، يبدو أن الاستيراد يعمل ولكنك ستحصل على الخطأ التالي عندما يحاول الملعب التنفيذ:

فشل تنفيذ الملعب:خطأ:لا يمكن البحث عن الرموز:

لقد أهدرت ساعة لمعرفة ذلك.:)

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

ما عليك سوى إنشاء ملعب في مشروعك، حيث يوجد دليل بداخله يسمى "المصادر"، ما عليك سوى سحب نسخة من فئة Swift إلى هذا المجلد وسيتمكن الملعب بعد ذلك من الوصول إليه.

على سبيل المثال:

enter image description here

لقد قمت للتو بوضع روابط لجميع ملفاتي السريعة في ملف Sources مجلد:

cd /path/to/project/MyPlayground.playground/Sources
ln -s ../../*.swift .

بهذه الطريقة، ستصبح التغييرات في ملفك المصدر سارية المفعول في ساحة اللعب الخاصة بك على الفور. عملت بشكل جيد جدا.

اكس كود 8.2، سويفت 3.0.1، ماك سييرا

كل ما عليك فعله هو أن تكتب في البداية:

import ModuleName

(بافتراض أن الملعب الخاص بك موجود في نفس مساحة العمل مثل إطار العمل/المشروع)

إذا كان لا يعمل:

  1. أعد بناء مشروعك

  2. أعد إنشاء الملعب وانسخ كل شيء من الملعب القديم هناك

أنه يحل الكثير من غريب أخطاء في عمليات الاستيراد والاستيراد الفاشلة مهما كان!

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