Почему я внезапно получаю использование необъявленного типа? [Дубликат]

Проблема с размещением файла общей сборки с помощью maven-assembly-plugin-2.2.1?

Попробуйте использовать параметр конфигурации descriptorId вместо параметров дескрипторов / дескрипторов или дескрипторовRefs / descriptorRef.

Ни один из них не делает то, что вам нужно: найдите файл в classpath. Конечно, вам нужно добавить пакет, в котором общая сборка находится на пути класса maven-assembly-plugin (см. Ниже). Если вы используете Maven 2.x (not Maven 3.x), вам может понадобиться добавить эту зависимость в самый верхний pom.xml родителя в разделе pluginManagement.

См. this для получения дополнительной информации.

Класс: org.apache.maven.plugin.assembly.io.DefaultAssemblyReader

Пример:

        
        
            maven-assembly-plugin
            2.2.1
            
                
                    make-assembly
                    package
                    
                        single
                    
                    
                        assembly-zip-for-wid
                    
                
            
            
                
                    cz.ness.ct.ip.assemblies
                    TEST_SharedAssemblyDescriptor
                    1.0.0-SNAPSHOT
                
            
        

126
задан Craig Otis 15 April 2016 в 12:32
поделиться

20 ответов

Фу, наконец, поставил диагноз. Как-то , оскорбительный файл Swift EditTaskPopoverController.swift был в двух разных фазах сборки.

Он был в Compile Sources правильно, со всеми другими файлами Swift, но это был также , по какой-то очень странной причине, в фазе Copy Bundle Resources, а также со всеми моими ресурсами XIB и изображения.

Я понятия не имею, как он туда попал, но удалив его с дополнительной фазы сборки решена проблема.

27
ответ дан Craig Otis 26 August 2018 в 13:13
поделиться

Возможно, вы добавили класс с некоторым «FirstNameClass» и после этого переименовали вручную в «ColoredDotView». Попробуйте скопировать содержимое класса «ColoredDotView» в буфер обмена, удалите «ColoredDotView» из проекта и добавьте agin.

Этот идентификатор исправляет аналогичную проблему у меня.

0
ответ дан Almin 26 August 2018 в 13:13
поделиться

Причиной для меня было имя функции, которое начиналось с тех же символов, что и тип:

@IBOutlet weak var tableView: CustomTableView!

, а в реализации у меня была функция, начинающаяся с CustomTableView

func CustomTableView(tableView: CustomTableView, dataForRow row:  Int) -> NSData {...}

Исправление заключалось в изменении сигнатуры функции, чтобы она не начиналась с тех же символов, что и тип (CustomTableView), например:

func dataForRow(row: Int, tableView: CustomTableView) -> NSData {...}

Это было очень ошибочное сообщение об ошибке для фактической причины в моем случае.

10
ответ дан Andrew 26 August 2018 в 13:13
поделиться

В меню XCode Product-> Clean, а затем Product-> Build работал для меня. Я столкнулся с этой проблемой при добавлении нового ViewController в мой проект в новой группе / папке.

15
ответ дан Array 26 August 2018 в 13:13
поделиться

Это может кому-то помочь.

Я создал новый тестовый проект с базовыми данными под названием «CoreData». Вскоре у меня есть «Использование необъявленного типа» для классов NSManagedObjectContext и других классов Core Data. После нескольких попыток импорта, добавления фаз сборки и т. Д. Я удалил проект и начал новый, называемый «TestingCoreData», и все это работало хорошо.

Не называйте (тестировать) проекты, такие как имя Классы

1
ответ дан Babac 26 August 2018 в 13:13
поделиться

В моем случае я хотел добавить метод с пользовательским swift-объектом в качестве параметра типа, а имя, которое я дал переменной в параметре, было точно таким же, как имя класса пользовательского объекта

Проблемы были примерно такими:

func moveBlob(**blob** : blob){
    ...code
}

Часть жирным шрифтом вызывала ошибку необъявленного типа

0
ответ дан cmario 26 August 2018 в 13:13
поделиться

В моем случае это было вызвано текстовым кодированием быстрых файлов. Один файл показал «No Explicit Encoding», и после преобразования его в «UTF-8» проблема решена.

И причина, по которой текстовое кодирование файла не является явным, заключается в том, что я скопировал весь код из другого swift-файла .

Скрипт с явным кодовым расширением

Скриншот UTF-8

0
ответ дан coder 26 August 2018 в 13:13
поделиться

, как хорошо упоминались другие, и в этот поток

использовал ненужные быстрые файлы в «ресурсах связки копий»

4
ответ дан Community 26 August 2018 в 13:13
поделиться

Об этом уже ответил @Craig Otis, но проблема возникает, когда рассматриваемые классы не принадлежат к одним и тем же целям, как правило, целевой тест отсутствует. Просто убедитесь, что отмечены следующие флажки.


target membership [/g1]

Изменить

Чтобы просмотреть целевое членство. Выберите файл, затем откройте инспектор файлов (⌥ + ⌘ + 1) [опция] + [команда] + 1

detailed description [/g2]

138
ответ дан Edwin 26 August 2018 в 13:13
поделиться

У меня была такая же проблема. Некоторые из файлов в моей структуре не были доступны из других классов в одном модуле.

По какой-то причине файлы, которые были добавлены в фреймворк в Xcode, не были частью источников компиляции. Если ваш файл Swift не является частью источников компиляции, вам нужно добавить их, нажав кнопку + и выбрав их во всплывающем окне.

Screenshot 1 [/g0]

Также сделать убедитесь, что файл является частью целевой среды. (Необходимо отметить маленькую коробку на скриншоте ниже)

Screenshot 2 [/g1]

9
ответ дан Groot 26 August 2018 в 13:13
поделиться

В моем случае была ошибка, сделанная мной. Я добавил новый файл как «OS X> Source> Cocoa Class» вместо «iOS> Source> Cocoa Touch Class».

1
ответ дан Javier Calatrava Llavería 26 August 2018 в 13:13
поделиться

Для меня я столкнулся с этой ошибкой, когда у моего тестового объекта не было быстрых файлов, которые моя цель создания приложения находилась в источниках компиляции. Это было очень запутанно, потому что «необъявленный тип» использовался во многих других местах без проблем, и ошибка казалась расплывчатой. Таким образом, решение было, конечно, добавить к тестовой цели файл, содержащий «необъявленный тип».

151
ответ дан mattorb 26 August 2018 в 13:13
поделиться

Это также может произойти, если в вашей сигнатуре есть функция с тем же именем, что и тип объекта. Например:

class func Player(playerObj: Player)

заставит компилятор запутаться (и это действительно так), поскольку компилятор сначала будет искать локально внутри файла, прежде чем смотреть на другие файлы. Таким образом, он смотрит на «Player» в подписи и думает, что это не объект в этой области, а функция, поэтому что-то не так.

Возможно, это хорошая причина, почему я не должен использовать класс функции. :) [/ Д2]

2
ответ дан Maxwell 26 August 2018 в 13:13
поделиться

Как и другие, это был какой-то несвязанный код, который вызывал ошибку @testable.

В моей тестовой мишени был заголовочный файл Objective-C с

@import ModuleUnderTest;

Я удалил эту строку (потому что импорт был фактически лишним) и чудесным образом @testable начал работать снова.

Я смог отслеживать это только, но удалять все из моего проект и добавление его обратно пополам до тех пор, пока он не сработает. В конце концов я нашел проблемную строку кода.

0
ответ дан Oliver Pearmain 26 August 2018 в 13:13
поделиться

При тестировании кода Swift, который принадлежит приложению, сначала убедитесь, что цель тестирования создает приложение как зависимость. Затем в своем тесте импортируйте приложение в виде модуля. Например:

@testable import MyApplication

Это сделает объекты Swift, которые являются частью приложения, доступными для теста.

1
ответ дан quellish 26 August 2018 в 13:13
поделиться

Это также может произойти, если вы случайно воспользуетесь именем параметра и назовите его так же, как и объект.

class func didRecieveData(BlockItems: [BlockItems])
3
ответ дан Rindom 26 August 2018 в 13:13
поделиться

Имеет ошибку с типом Int из-за ссылки на локальный case в моем перечислении, называемом .Int

func foo() { switch self { case .Int(var info): // ..... some other code } }

Там была ошибка someFuncWithInt(parameter: Int)

Исправлено с someFuncWithInt(parameter: Swift.Int)

-1
ответ дан Tim 26 August 2018 в 13:13
поделиться

Я получил это сообщение об ошибке в Xcode 8 при реорганизации кода в фреймворк, выясняется, что я забыл объявить класс в рамках как public

2
ответ дан tsuchi.one 26 August 2018 в 13:13
поделиться

Я попробовал много предлагаемых решений, но в итоге удалил файл и снова создал его, а Xcode был смягчен: /

2
ответ дан Yusuf X 26 August 2018 в 13:13
поделиться

В моем случае это было вызвано тем, что имя подкласса используется в самой следующей строке как имя переменной с другим типом:

var binGlow: pipGlow = pipGlow(style: "Bin")
var pipGlow: PipGlowSprite = PipGlowSprite()

Обратите внимание, что в строке 1 pipGlow - это имя подкласса (SKShapeNode), но во второй строке я использовал pipGlow в качестве имени переменной. Это был не только плохой стиль кодирования, но, по-видимому, прямой и нет-нет! Как только я изменил вторую строку на:

var binGlow: pipGlow = pipGlow(style: "Bin")
var pipGlowSprite: PipGlowSprite = PipGlowSprite()

, я больше не получил ошибку. Надеюсь, это поможет кому-то!

1
ответ дан zeeple 26 August 2018 в 13:13
поделиться
Другие вопросы по тегам:

Похожие вопросы: