Size: a a a

iOS Developers — русскоговорящее сообщество

2020 August 31

Y

Yurka in iOS Developers — русскоговорящее сообщество
where Self: NSManagedObject - вот поэтому и не работает
источник

KS

Kei Sidorov in iOS Developers — русскоговорящее сообщество
Yurka
where Self: NSManagedObject - вот поэтому и не работает
Это строчка накладывает ограничения на то, кто может следовать этому контракту. Но сама функция не накладывает таких ограничений.
источник

IH

Itan Hunt in iOS Developers — русскоговорящее сообщество
Здравствуйте, кто подскажет , где находится этот пункт? я не нашел!
источник

b

bodich in iOS Developers — русскоговорящее сообщество
Yurka
where Self: NSManagedObject - вот поэтому и не работает
Только поэтому у меня работает другой кусок кода внутри вне скрина)) Как это where может повлиять-то
источник

b

bodich in iOS Developers — русскоговорящее сообщество
Yurka
where Self: NSManagedObject - вот поэтому и не работает
Без него тоже самое
источник

Y

Yurka in iOS Developers — русскоговорящее сообщество
bodich
Без него тоже самое
Предлагаю начать с того, зачем вообще Generic в глобальном методе?
источник

KS

Kei Sidorov in iOS Developers — русскоговорящее сообщество
Yurka
Предлагаю начать с того, зачем вообще Generic в глобальном методе?
чувак это пример
источник

b

bodich in iOS Developers — русскоговорящее сообщество
Kei Sidorov
чувак это пример
+ :))
источник

Y

Yurka in iOS Developers — русскоговорящее сообщество
bodich
Привет, кто шарит круто в протоколах? Почему строка 14 работает, а строка 18 не компилируется? По моей логике, это одно и то же, но из массива не хочет...
У тебя есть протокол CloudKitManagedObject, но это совсем не означает, что под этим протоколом ты не пропихнешь класс, который не соответствует NSManagedObject, а вот класс Item он указан как наследник NSManagedObject.
Вот и результат, тебе выводится ошибка, что мол протокол CloudKitManagedObject совсем не означает, что ты не попытаешься пропихнуть класс, который не является наследником NSManagedObject
источник

b

bodich in iOS Developers — русскоговорящее сообщество
Вот, написал развернуто, чтобы убрать все вопросы, почему так))
источник

Y

Yurka in iOS Developers — русскоговорящее сообщество
ты в коде можешь легко сделать
class Blabla: CloudKitManagedObject {}
И потом его попытаешься пропихнуть в твой метод. Но он не будет наследником NSManagedObject
источник

b

bodich in iOS Developers — русскоговорящее сообщество
Yurka
У тебя есть протокол CloudKitManagedObject, но это совсем не означает, что под этим протоколом ты не пропихнешь класс, который не соответствует NSManagedObject, а вот класс Item он указан как наследник NSManagedObject.
Вот и результат, тебе выводится ошибка, что мол протокол CloudKitManagedObject совсем не означает, что ты не попытаешься пропихнуть класс, который не является наследником NSManagedObject
Это невозможно потому что where Self: NSManagedObject
источник

Y

Yurka in iOS Developers — русскоговорящее сообщество
да ладно??
источник

KS

Kei Sidorov in iOS Developers — русскоговорящее сообщество
bodich
Без него тоже самое
Короче в функции ты делаешь констрейнт на произволный тип, чтобы он следовал контракту CloudKitManagedObject.

Далее, дергаешь метод и передаешь ему тип Item.self — этот тип удовлетворяет ограничению: он “что-то там” плюс CloudKitManagedObject.

Потом ты делаешь массив, и указывая у него тип явно срезаешь до протокола CloudKitManagedObject. Твоя функция требует объект, который будет следовать этому протоколу, а получает просто протокол.
источник

b

bodich in iOS Developers — русскоговорящее сообщество
Yurka
ты в коде можешь легко сделать
class Blabla: CloudKitManagedObject {}
И потом его попытаешься пропихнуть в твой метод. Но он не будет наследником NSManagedObject
Не могу
источник

Y

Yurka in iOS Developers — русскоговорящее сообщество
Значит, он создается неявно, но проблема именно в этом
источник

b

bodich in iOS Developers — русскоговорящее сообщество
Yurka
да ладно??
Именно так, иначе метод fetchRequest не компилируется
источник

b

bodich in iOS Developers — русскоговорящее сообщество
Этот протокол явно означает что родитель NSManagedObject
источник

Y

Yurka in iOS Developers — русскоговорящее сообщество
А если protocol CloudKitManagedObject where Self = (какой-то там другой класс)
источник

Y

Yurka in iOS Developers — русскоговорящее сообщество
bodich
Этот протокол явно означает что родитель NSManagedObject
Как раз таки нет)
источник