Swift 4: нет такого модуля 'CoreServices.DictionaryServices'

Я читал статью, рассказывающую о базовых сервисах, и решил использовать одну из них. Я импортирую Core Services и добавляю библиотеку в XCode, но она не работает.

Образец кода:

import Foundation
import CoreServices.DictionaryServices

func define(_ word: String) -> String? {
    let nsstring = word as NSString
    let cfrange = CFRange(location: 0, length: nsstring.length)

    guard let definition = DCSCopyTextDefinition(nil, nsstring, cfrange) else {
        return nil
    }

    return String(definition.takeUnretainedValue())
}

define("apple") // "apple | ˈapəl | noun 1 the round fruit of a tree..."

При импорте выдает ошибку "нет такого модуля". Я также смотрю на документацию Apple, но там нет объяснения того, как ее реализовать и использовать.

Решение:

Спасибо людям, которые ответили ниже на мой вопрос, я провел небольшое исследование и нашел решение. По-видимому, я могу использовать словарь iOS, позвонив UIReferenceLibraryViewController, но в документации Apple говорится, что мы не должны использовать это в качестве приложения для словаря. Очевидно, что недостаточно сделать приложение словаря, потому что оно использует свое собственное ViewController и не настраивается.

Вот пример рабочего кода:

 let dic = UIReferenceLibraryViewController(term: textLabelOutlet.text as! String)
        dic.modalPresentationStyle = .popover // add this

        let popover = dic.popoverPresentationController
        popover?.sourceView = view
        popover?.sourceRect = CGRect(x: 32, y: 32, width: 64, height: 64)
        present(dic, animated: true)

Источник: UIReferenceLibraryViewController не может быть представлен как всплывающее окно (всегда покрывает весь экран)

2 ответа

CoreServices.DictionaryServices это фреймворк OS X, а не iOS.

Вы могли бы нажать CoreServices.DictionaryServicesи увидеть страницу в проекте приложения Mac.

/*
    DictionaryServices.h
    DictionaryServices framework

*/

/*!
    @typedef    DCSDictionaryRef
    @abstract   Opaque CF object that represents a dictionary file
*/
public class DCSDictionary {
}


@available(OSX 10.5, *)
public func DCSGetTermRangeInString(_ dictionary: DCSDictionary?, _ textString: CFString, _ offset: CFIndex) -> CFRange

CoreServices может быть доступен на всех платформах, но DictionaryServices кажется, доступен только на macOS.

https://developer.apple.com/documentation/coreservices/1446842-dcscopytextdefinition

Только списки SDK: macOS 10.5+

Другие вопросы по тегам