Какао Touch Framework больше не совместим с расширением WatchKit? Мне нужен Watch Framework?

Я обновляю одно из своих приложений с Xcode 7 до Swift 2.0.

В моем приложении на Xcode 6 и Watch OS 1 использовалась платформа Cocoa Touch для совместного использования модели Core Data между приложением iOS и расширением WatchKit.

В Swift 2.0 и Xcode 7 я заметил, что моя структура больше не распознается в моем расширении WatchKit, я получаю

Нет такой модели модуля

in

import Model 

Я кое-что читал об этом в Интернете, и есть одно решение - создать Watch Framework:

Я пробую этот способ, и теперь и приложение iOS, и расширение WatchKit могут видеть фреймворк.

1) Фреймворки Cocoa Touch больше не совместимы с расширениями WatchKit или мне не хватает чего-то еще?


ОБНОВИТЬ

2) Где мне разместить свою модель основных данных? Мое приложение также должно работать без приложения Apple Watch, даже если у пользователя есть только устройство iOS. Какой тип фреймворка или обходной путь мне нужен?


person Massimo Polimeni    schedule 20.09.2015    source источник


Ответы (2)


В watchOS 1.0 расширение приложения для часов выполнялось на iPhone, поэтому фреймворки, созданные для iPhone, также были доступны для расширения watchOS.

В watchOS 2.0 расширение приложения для часов больше не выполняется на iPhone, а на Watch. Платформы, созданные для iOS, несовместимы с watchOS, поскольку iOS и watchOS - разные операционные системы.
Создавая структуру для watchOS, ваша платформа может работать на Watch.


Примечание по использованию CoreData в watchOS 2.0: если вы хотите поделиться своей моделью данных с часами в watchOS 2.0, вам необходимо синхронизировать данные между часами и телефоном, поскольку расширение приложения для часов теперь выполняется на ваших часах, а основные модели данных хранятся во внутренней памяти. часов.

person Palle    schedule 20.09.2015
comment
Хорошо, мои подозреваемые подтверждены. Только одно: если я создал платформу Watch, но пользователь использует только приложение iOS? Потому что мое приложение можно использовать и без часов, только на устройстве iOS. Куда мне поместить основные данные? Я обновил свой вопрос :) - person Massimo Polimeni; 21.09.2015

Как написал @blobbfuesch, они несовместимы, потому что с появлением watchOS 2 они выполняются в разных операционных системах, поэтому вам нужно создать отдельную структуру Watch.

Сначала я столкнулся с проблемой дублирования кода между фреймворками (в основном это были модели) и решил ее, создав папку «Shared Framework Code», в которую был помещен весь общий код и были установлены флажки «Целевое членство» для двух фреймворков (Cocoa Прикоснись и смотри).

update Это ваш случай: Использование основных данных с watchOS 2.0

Вы должны использовать WatchConnectivity, в частности класс WCSession, для синхронизации данных между Watch и Phone. У них есть отдельные файловые системы, поэтому вам нужно дублировать данные между ними, но это не относится к коду, как я упоминал выше.

person Dmytro Hutsuliak    schedule 21.09.2015
comment
Спасибо за ссылку на другой вопрос! - person Massimo Polimeni; 21.09.2015