> Here’s something ‘cute’. Make a simple ios project using coredata. Name an > entity whatever you like, but give it any attribute that starts with ‘is’. > Such as isVisited or isDone or whatever you like of type Boolean. Try > setting the entity to true or false, no matter, and save the entity. The > project will fail saying : 2016-06-07 15:10:55.601 TestCoreData[5269:1527094] > -[TestCoreData.HoldBoolean setDone:]: unrecognized selector sent to instance > 0x7fd9fbc59380. (HoldBoolean was the entity name in the project) > The attribute in that case was set to ‘isDone’, if the attribute had been > named ‘isWhatever’, it would have failed saying TestCoreData.HoldBoolean > setWhatever:] > CoreData won’t accept any attribute starting with ‘is’. This is with the > latest June 6 development build but it was the same in the May 31 build. This > may only affect attributes of type boolean, I haven’t checked that. > > Or am I doing something stupid?
Objective-C has a sort of informal, unevenly-used convention that the setter corresponding to `-isFoo` is `-setFoo:`, not `-setIsFoo:`. I suspect that Core Data is trying to follow this convention, but Swift doesn't generate setters using this pattern. It would be nice if you could write something like this: var isFoo: Bool { get @objc(setFoo:) set } But unfortunately you don't seem to be able to. Perhaps the simplest fix is to say: @objc(foo) var isFoo: Bool And adjust your managed object model accordingly. -- Brent Royal-Gordon Architechies _______________________________________________ swift-users mailing list swift-users@swift.org https://lists.swift.org/mailman/listinfo/swift-users