programing

자신의 프로젝트에서 플레이 그라운드로 자신의 클래스를 가져 오는 방법

nasanasas 2020. 10. 17. 10:37
반응형

자신의 프로젝트에서 플레이 그라운드로 자신의 클래스를 가져 오는 방법


다음과 같은 설정을 가정합니다.

  • Objective-C와 Swift를 모두 사용하여 자체 클래스 (예 : MyView 및 MyViewController)를 구현 한 Xcode 6 프로젝트가 있습니다.
  • 프로젝트에 플레이 그라운드를 추가했습니다.

Playground UIKit에서 import키워드 같이 모듈 (프레임 워크)을 가져올 수 있습니다 . 플레이 그라운드에서 프로젝트의 다른 클래스에 대한 액세스를 어떻게 활성화합니까?

프로젝트 클래스에 직접 액세스하려고하면 다음 오류 메시지가 표시됩니다. 해결되지 않은 식별자 'MyView'사용


Xcode 6.0 Beta 5부터는 이제 자신의 프레임 워크를 플레이 그라운드로 가져올 수 있습니다. 이를 통해 프레임 워크를 가져올 수있는 애플리케이션과 플레이 그라운드간에 코드를 공유 할 수 있습니다. 이것을하기 위해:

  1. 플레이 그라운드는 프레임 워크를 생성하는 프로젝트와 동일한 작업 공간에 있어야합니다. 작업 공간에는 미리 빌드 된 프레임 워크를 사용하는 대신 프레임 워크를 생성하는 대상이 포함되어야합니다.

  2. 이미 프레임 워크를 구축 했어야합니다. iOS 프레임 워크 인 경우 64 비트 실행 대상 (예 : iPhone 5s) 용으로 빌드해야하며 시뮬레이터 용으로 빌드해야합니다.

  3. 적어도 하나의 대상을 빌드하는 활성 체계가 있어야합니다 (대상의 빌드 위치가 플레이 그라운드의 프레임 워크 검색 경로에 사용됨).

  4. "빌드 위치"기본 설정 (Xcode의 고급 "위치"설정에서)은 "레거시"로 설정되어서는 안됩니다.

  5. 프레임 워크가 Swift 프레임 워크가 아닌 경우 "Defines Module"빌드 설정을 "Yes"로 설정해야합니다.

  6. 프레임 워크에 대한 플레이 그라운드에 import 문을 추가해야합니다.

이러한 모든 조건이 충족되면 프레임 워크 가져 오기가 플레이 그라운드에서 작동합니다.

Xcode 7에서는 프레임 워크를 가져 오는 대신 자신의 클래스를 소스로 가져 오는 데 사용할 수있는 또 다른 메커니즘을 도입했습니다. http://help.apple.com/xcode/mac/8.0/#/devfa5bea3af 에서 "보조 소스"지원에 대해 읽을 수 있습니다 .


실제로 다음을 수행하여 현재 프로젝트의 다른 Swift 파일을 참조 할 수있었습니다.

  • 빈 놀이터를 만들고 장소는 프로젝트 아래 어딘가에 있습니다.
  • YourPlayground.playground터미널 에서 번들 (예, 번들 = 디렉터리)을 엽니 다 .
  • 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.swiftsection-2.swift(당신이 처음부터 놀이터를 만든 경우, 예를 들어이 있어야 section-1.swift번들에서)
  • 추가 하드 링크 (심볼 링크가 작동하지 않는 것)라는 이름 section-1.swift처럼 스위프트 클래스 파일에 번들 밖에 가리 킵니다 :
ln ../../Classes/MyView.swift section-1.swift
  • Xcode를 닫고 Playground를 다시 엽니 다.
  • 이제 두 개의 섹션이 있어야합니다. 하나는 Swift 클래스 파일의 내용을 포함하고 다른 하나는 Playground를 처음부터 생성하여 얻은 예제 내용을 포함합니다.

이렇게하면 실제로 플레이 그라운드 외부에있는 코드를 실행할 수 있지만 Xcode는 이렇게하면 더 자주 충돌하는 것 같습니다.

편집하다:

Xcode 6 베타 5부터 Rick Ballard가 그의 답변 에서 지시 한대로 이제 프로젝트 파일을 참조 할 수 있습니다.


Xcode 6 베타 5부터 프레임 워크에있는 경우 코드를 가져올 수 있습니다. 당신이해야 할 일은 프레임 워크 타겟을 만들고 거기에 Swift 파일을 추가하고 플레이 그라운드에서하는 것입니다.

import ModuleName

빌드 설정에서 모듈 이름을 찾을 수 있습니다. 일반적으로 대상 이름과 동일합니다.

보고 싶은 코드를 작성하는 것을 잊지 마십시오 public. 플레이 그라운드에서 변경 사항을 사용할 수 있으려면 먼저 프로젝트를 빌드해야합니다. (또한 재실행을 트리거하려면 플레이 그라운드를 편집해야합니다.)

중대한

플레이 그라운드 파일에 대상과 같은 이름을 지정하지 마십시오! 그렇게하면 가져 오기가 작동하는 것처럼 보이지만 플레이 그라운드가 실행을 시도 할 때 다음 오류가 발생합니다.

플레이 그라운드 실행 실패 : 오류 : 기호를 조회 할 수 없습니다.

나는 그것을 알아내는 데 한 시간을 낭비했다. :)


여기에있는 답변을 사용하여 작동시킬 수 없었기 때문에 놀기 시작했고 빠른 수업을 놀이터로 가져 오는 간단한 방법을 찾았습니다.

Just create a playground in your project, theres a directory inside it called 'sources', just drag a copy of the swift class into that folder and the playground then will have access to it.

For example:

enter image description here


I just put links to all my swift files in the Sources folder:

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

This way changes in your source file will take effect in your playground immediately. Worked very nicely.

Xcode 8.2, Swift 3.0.1, macOS Sierra


All you have to do - is write in the beginning:

import ModuleName

(assuming your playground placed in the same workspace as framework/project)

If it's doesn't work:

  1. Rebuild your project

  2. Recreate playground and copy all from old playground there

It solves a lot of strange errors with failed init's and imports of whatever!

참고URL : https://stackoverflow.com/questions/24045245/how-to-import-own-classes-from-your-own-project-into-a-playground

반응형