ОБНОВЛЕНО: создание и использование быстрой статической библиотеки в Xcode 10.1 - PullRequest
0 голосов
/ 17 января 2019

Я планирую создать статическую библиотеку swift и использовать ее в приложении ios swift. Я создаю быструю статическую библиотеку по вызову SimpleLib, и она включает в себя открытый класс Greeting, который возвращает строку Hello World:

//
//  Greeting.swift
//  SimpleLib
//

import Foundation

public class Greeting {
   public func Hello() -> String {
     return "Hello World";
   }
   public init() {

   }

   public static func SayMorning() -> String{
      return "Hi, Morning";
   }
}

Проект быстрой статической библиотеки выглядит так:

enter image description here

И модуль.modulemap определен следующим образом:

module SimpleLib {
  header "SimpleLib-Swift.h"
  export *
}

Я создаю и создаю файл libSimpleLib.a, помещаю .a и другие файлы (упомянутые в других публикациях в Интернете, чтобы упомянуть о необходимости поместить их в папку приложения) в папку приложения:

enter image description here

В проекте приложения я включаю путь Libs в FREAMEWORK_SEARCH_PATHS, LIBRARY_SEARCH_PATHS и HEADER_SEARCH_PATHS и включаю файл .a в Linked Framework

enter image description here

Однако, когда я пытаюсь сослаться на класс Greeting в AppDelegate, у меня появляется ошибка - Использование неразрешенного идентификатора 'Greeting'

//
//  AppDelegate.swift
//  testStatic
//

import UIKit
import SimpleLib


@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {

   var window: UIWindow?

   func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
      // Override point for customization after application launch.
      var s = Greeting
      return true
   }
 ......
 }

enter image description here

Как сделать объекты Swift в статической библиотеке можно найти в приложении. Как правильно экспортировать класс / функции в статическую библиотеку swift? Кто-нибудь добился успеха в создании и использовании быстрой статической библиотеки в приложении для iOS?

Ответы [ 2 ]

0 голосов
/ 25 января 2019

Включите ваш module.modulemap и arm64.swiftmodule путь в настройках приложения SWIFT_INCLUDE_PATHS.

0 голосов
/ 17 января 2019

Проблема в том, что ваш класс имеет то же имя, что и ваш модуль. Попробуйте simple.simple() создать экземпляр вашего класса или, альтернативно, переименовать либо модуль, либо класс.

...