Проблема с размещением файла общей сборки с помощью 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
Фу, наконец, поставил диагноз. Как-то , оскорбительный файл Swift EditTaskPopoverController.swift
был в двух разных фазах сборки.
Он был в Compile Sources
правильно, со всеми другими файлами Swift, но это был также , по какой-то очень странной причине, в фазе Copy Bundle Resources
, а также со всеми моими ресурсами XIB и изображения.
Я понятия не имею, как он туда попал, но удалив его с дополнительной фазы сборки решена проблема.
Возможно, вы добавили класс с некоторым «FirstNameClass» и после этого переименовали вручную в «ColoredDotView». Попробуйте скопировать содержимое класса «ColoredDotView» в буфер обмена, удалите «ColoredDotView» из проекта и добавьте agin.
Этот идентификатор исправляет аналогичную проблему у меня.
Причиной для меня было имя функции, которое начиналось с тех же символов, что и тип:
@IBOutlet weak var tableView: CustomTableView!
, а в реализации у меня была функция, начинающаяся с CustomTableView
func CustomTableView(tableView: CustomTableView, dataForRow row: Int) -> NSData {...}
Исправление заключалось в изменении сигнатуры функции, чтобы она не начиналась с тех же символов, что и тип (CustomTableView), например:
func dataForRow(row: Int, tableView: CustomTableView) -> NSData {...}
Это было очень ошибочное сообщение об ошибке для фактической причины в моем случае.
В меню XCode Product-> Clean, а затем Product-> Build работал для меня. Я столкнулся с этой проблемой при добавлении нового ViewController в мой проект в новой группе / папке.
Это может кому-то помочь.
Я создал новый тестовый проект с базовыми данными под названием «CoreData». Вскоре у меня есть «Использование необъявленного типа» для классов NSManagedObjectContext и других классов Core Data. После нескольких попыток импорта, добавления фаз сборки и т. Д. Я удалил проект и начал новый, называемый «TestingCoreData», и все это работало хорошо.
Не называйте (тестировать) проекты, такие как имя Классы
В моем случае я хотел добавить метод с пользовательским swift-объектом в качестве параметра типа, а имя, которое я дал переменной в параметре, было точно таким же, как имя класса пользовательского объекта
Проблемы были примерно такими:
func moveBlob(**blob** : blob){
...code
}
Часть жирным шрифтом вызывала ошибку необъявленного типа
В моем случае это было вызвано текстовым кодированием быстрых файлов. Один файл показал «No Explicit Encoding», и после преобразования его в «UTF-8» проблема решена.
И причина, по которой текстовое кодирование файла не является явным, заключается в том, что я скопировал весь код из другого swift-файла .
Скрипт с явным кодовым расширением
Скриншот UTF-8
, как хорошо упоминались другие, и в этот поток
использовал ненужные быстрые файлы в «ресурсах связки копий»
Об этом уже ответил @Craig Otis, но проблема возникает, когда рассматриваемые классы не принадлежат к одним и тем же целям, как правило, целевой тест отсутствует. Просто убедитесь, что отмечены следующие флажки.
[/g1]
Чтобы просмотреть целевое членство. Выберите файл, затем откройте инспектор файлов (⌥ + ⌘ + 1) [опция] + [команда] + 1
[/g2]
У меня была такая же проблема. Некоторые из файлов в моей структуре не были доступны из других классов в одном модуле.
По какой-то причине файлы, которые были добавлены в фреймворк в Xcode, не были частью источников компиляции. Если ваш файл Swift не является частью источников компиляции, вам нужно добавить их, нажав кнопку + и выбрав их во всплывающем окне.
[/g0]
Также сделать убедитесь, что файл является частью целевой среды. (Необходимо отметить маленькую коробку на скриншоте ниже)
[/g1]
В моем случае была ошибка, сделанная мной. Я добавил новый файл как «OS X> Source> Cocoa Class» вместо «iOS> Source> Cocoa Touch Class».
Для меня я столкнулся с этой ошибкой, когда у моего тестового объекта не было быстрых файлов, которые моя цель создания приложения находилась в источниках компиляции. Это было очень запутанно, потому что «необъявленный тип» использовался во многих других местах без проблем, и ошибка казалась расплывчатой. Таким образом, решение было, конечно, добавить к тестовой цели файл, содержащий «необъявленный тип».
Это также может произойти, если в вашей сигнатуре есть функция с тем же именем, что и тип объекта. Например:
class func Player(playerObj: Player)
заставит компилятор запутаться (и это действительно так), поскольку компилятор сначала будет искать локально внутри файла, прежде чем смотреть на другие файлы. Таким образом, он смотрит на «Player» в подписи и думает, что это не объект в этой области, а функция, поэтому что-то не так.
Возможно, это хорошая причина, почему я не должен использовать класс функции. :) [/ Д2]
Как и другие, это был какой-то несвязанный код, который вызывал ошибку @testable
.
В моей тестовой мишени был заголовочный файл Objective-C с
@import ModuleUnderTest;
Я удалил эту строку (потому что импорт был фактически лишним) и чудесным образом @testable
начал работать снова.
Я смог отслеживать это только, но удалять все из моего проект и добавление его обратно пополам до тех пор, пока он не сработает. В конце концов я нашел проблемную строку кода.
При тестировании кода Swift, который принадлежит приложению, сначала убедитесь, что цель тестирования создает приложение как зависимость. Затем в своем тесте импортируйте приложение в виде модуля. Например:
@testable import MyApplication
Это сделает объекты Swift, которые являются частью приложения, доступными для теста.
Это также может произойти, если вы случайно воспользуетесь именем параметра и назовите его так же, как и объект.
class func didRecieveData(BlockItems: [BlockItems])
Имеет ошибку с типом Int
из-за ссылки на локальный case
в моем перечислении, называемом .Int
func foo() {
switch self {
case .Int(var info):
// ..... some other code
}
}
Там была ошибка
someFuncWithInt(parameter: Int)
Исправлено с
someFuncWithInt(parameter: Swift.Int)
Я получил это сообщение об ошибке в Xcode 8 при реорганизации кода в фреймворк, выясняется, что я забыл объявить класс в рамках как public
Я попробовал много предлагаемых решений, но в итоге удалил файл и снова создал его, а Xcode был смягчен: /
В моем случае это было вызвано тем, что имя подкласса используется в самой следующей строке как имя переменной с другим типом:
var binGlow: pipGlow = pipGlow(style: "Bin")
var pipGlow: PipGlowSprite = PipGlowSprite()
Обратите внимание, что в строке 1 pipGlow - это имя подкласса (SKShapeNode), но во второй строке я использовал pipGlow в качестве имени переменной. Это был не только плохой стиль кодирования, но, по-видимому, прямой и нет-нет! Как только я изменил вторую строку на:
var binGlow: pipGlow = pipGlow(style: "Bin")
var pipGlowSprite: PipGlowSprite = PipGlowSprite()
, я больше не получил ошибку. Надеюсь, это поможет кому-то!