2016-09-13 6 views
3

У меня возникла интересная проблема с watchOS 3 и watchOS 2. В моем ComplicationController я хочу поддерживать как watchOS 3, так и watchOS 2.. При создании шаблонов осложнений я проверяю, работает ли пользователь watchOS 3. Если это так, я разрешаю использовать осложнение .ExtraLarge, иначе этот параметр недоступен.Как сделать быструю проверку доступности на watchOS 3

Я использую синтаксис #available, но приложение не может даже запустить на watchOS 2 из-за недостающей структуры. Вот мой код:

if #available(watchOSApplicationExtension 3.0, *) { 
    if complicationFamily == .ExtraLarge { 
     let extraLarge = CLKComplicationTemplateExtraLargeSimpleText() 
     extraLarge.textProvider = simpleTextProvider 

     return extraLarge 
    } else { 
     return nil 
    } 
} else { 
    return nil 
} 

Когда я бегу на watchOS 2 это ошибка, я получаю:

dyld: Symbol not found: _OBJC_CLASS_$_CLKComplicationTemplateExtraLargeSimpleText 
    Referenced from: /Users/asdf/Library/Developer/CoreSimulator/Devices/48D00565-3BA5-4851-B249-5818BA060716/data/Containers/Bundle/Application/1ACF1C41-9D9E-4AB6-9D49-767A067AE968/WatchKit App.app/PlugIns/WatchKit Extension.appex/WatchKit Extension 
    Expected in: /Library/Developer/CoreSimulator/Profiles/Runtimes/watchOS 2.2.simruntime/Contents/Resources/RuntimeRoot/System/Library/Frameworks/ClockKit.framework/ClockKit 

Кто-нибудь еще были проблемы развертывания и к watchOS 3 и watchOS 2?

ответ

0

Я понял это с помощью публикации на форумах разработчиков Apple. Мне нужно было добавить ClockKit.framework к связанным двоичным файлам и установить его статус на Optional. Теперь все работает так, как ожидалось, на watchOS 2.

Вот это сообщение: https://forums.developer.apple.com/thread/61712