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

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

  •  21-12-2019
  •  | 
  •  

문제

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

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

Playground에서는 다음과 같은 모듈(프레임워크)을 가져올 수 있습니다. UIKit 와 더불어 import 예어.Playground에서 프로젝트의 다른 클래스에 대한 액세스를 어떻게 활성화합니까?

프로젝트 클래스에 직접 액세스하려고 하면 오류 메시지가 나타납니다.확인되지 않은 식별자 'MyView' 사용

도움이 되었습니까?

해결책

Xcode 6.0 베타 5의 경우, 자신의 프레임 워크를 놀이터로 가져올 수 있습니다. 이는 프레임 워크를 가져올 수있는 응용 프로그램과 놀이터간에 코드를 공유하는 방법을 제공합니다. 이렇게하려면 :

  1. 놀이터는 프레임 워크를 생성하는 프로젝트와 동일한 작업 공간에 있어야합니다. 작업 공간에는 사전 구축 된 프레임 워크를 사용하는 대신 프레임 워크를 생성하는 대상이 있어야합니다.

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

  3. 적어도 하나의 대상을 빌드하는 활성 체계가 있어야합니다 (해당 대상의 빌드 위치는 놀이터의 프레임 워크 검색 경로에서 사용됩니다).

  4. "빌드 위치"환경 설정 (Xcode의 고급 "위치"설정)은 "레거시"로 설정해서는 안됩니다.

  5. 프레임 워크가 Swift 프레임 워크가 아닌 경우 "모듈 정의"빌드 설정을 "예"로 설정해야합니다.

  6. 프레임 워크에 대해 놀이터에 import 문을 추가해야합니다.

  7. 이러한 모든 조건이 충족되면 프레임 워크를 가져 오는 것은 놀이터에서 작동합니다.

    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.swift 에게 section-2.swift (처음부터 플레이그라운드를 만든 경우 예제가 있어야 합니다. section-1.swift 번들에 있음)
  • 을 추가하다 하드 링크 (심볼릭 링크가 작동하지 않는 것 같습니다) section-1.swift 이는 번들 외부에서 다음과 같이 Swift 클래스 파일을 가리킵니다.
ln ../../Classes/MyView.swift section-1.swift
  • Xcode를 닫고 플레이그라운드를 다시 엽니다.
  • 이제 두 개의 섹션이 있어야 합니다. 하나는 Swift 클래스 파일의 콘텐츠이고 다른 하나는 처음부터 Playground를 생성하면서 얻은 예제 콘텐츠가 포함되어 있습니다.

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

편집하다:

Xcode 6 베타 5부터 Rick Ballard가 그의 지침에 따라 프로젝트 파일을 참조할 수 있습니다. 답변.

Xcode 6의 베타 5 이후 프레임 워크에있는 경우 코드를 가져올 수 있습니다.당신이해야 할 일은 프레임 워크 대상을 만들고, 거기에 스위프트 파일을 추가하고 놀이터에서는

import ModuleName
.

빌드 설정에서 모듈 이름을 조회 할 수 있습니다.대상 이름과 동일합니다.

public를 보려는 코드를 만드는 것을 잊지 마십시오.놀이터에서 변경 사항을 사용할 수 있기 전에 프로젝트를 작성해야합니다.재 실행을 트리거하기 위해 놀이터를 편집해야합니다.)

중요

놀이터 파일을 대상과 동일한 이름으로주지 마십시오!그렇게하는 경우 가져 오는 것이 작동하지만 놀이터가 실행하려고 할 때 다음 오류가 발생합니다.

놀이터 실행 실패 : 오류 : 조회 할 수 없습니다.

나는 그걸 알아낼 때 1 시간을 낭비했다.:)

여기서 답변을 사용하여 작업을 수행 할 수 없었으므로 나는 놀기를 시작하여 Swift 클래스를 놀이터로 가져 오는 간단한 방식을 발견했습니다.

프로젝트에서 놀이터를 만듭니다. '소스'라는 내부의 디렉토리에 Swift 클래스의 사본을 해당 폴더로 끌어서 놀이터에 액세스 할 수 있습니다.

예 :

Enter여기에 이미지 설명 >

Sources 폴더에있는 모든 Swift 파일에 대한 링크를 방금 넣습니다.

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

이렇게하면 소스 파일의 변경 사항이 즉시 운동장에 적용됩니다.은 매우 잘 작동했습니다 .

Xcode 8.2, Swift 3.0.1, MacOS 시에라

모든 일을해야합니다. 시작 부분 :

import ModuleName
.

(프레임 워크 / 프로젝트와 동일한 작업 공간에 놀이터가 가정)

작동하지 않는 경우 :

  1. 프로젝트 재구성

  2. 놀이터를 재창조하고 오래 된 놀이터에서 모두 복사

  3. 실패한 init의 의 실패한 의 많은 이상한 오류를 해결합니다!

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top