Эта проблема возникла у меня при переносе проекта с Objective-C на Swift 2 с XCode 7 . Этот проект работал, и по уважительной причине: я использовал MOGenerator, у которого были методы замены, чтобы исправить эту ошибку. Но не все методы требуют замены.
Итак, вот полное решение с примером класса, максимально полагаясь на средства доступа по умолчанию.
Допустим, у нас есть список с упорядоченными элементами
Первый быстрый быстрый выигрыш , если у вас есть отношение один / ко многим, проще всего это сделать:
item.list = list
вместо
list.addItemsObject(item)
Теперь, , если это не вариант , вот что вы можете сделать:
// Extension created from your DataModel by selecting it and
// clicking on "Editor > Create NSManagedObject subclass…"
extension List {
@NSManaged var items: NSOrderedSet?
}
class List
// Those two methods work out of the box for free, relying on
// Core Data's KVC accessors, you just have to declare them
// See release note 17583057 https://developer.apple.com/library/prerelease/tvos/releasenotes/DeveloperTools/RN-Xcode/Chapters/xc7_release_notes.html
@NSManaged func removeItemsObject(item: Item)
@NSManaged func removeItems(items: NSOrderedSet)
// The following two methods usually work too, but not for NSOrderedSet
// @NSManaged func addItemsObject(item: Item)
// @NSManaged func addItems(items: NSOrderedSet)
// So we'll replace them with theses
// A mutable computed property
var itemsSet: NSMutableOrderedSet {
willAccessValueForKey("items")
let result = mutableOrderedSetValueForKey("items")
didAccessValueForKey("items")
return result
}
func addItemsObject(value: Item) {
itemsSet.addObject(value)
}
func addItems(value: NSOrderedSet) {
itemsSet.unionOrderedSet(value)
}
end
Конечно, если вы Вы используете Objective-C, вы можете сделать то же самое, поскольку именно здесь я и получил идею:)
Связь в реальном времени Microsoft: протоколы и технологии http://technet.microsoft.com/en-us/library/bb457036.aspx