Xcode 7.2 中 NSManagedObject 子类的代码生成器与 Objective-C 的代码生成不匹配。 (没有用于多对多关系的访问器方法。)
所以我想这样做:
- 在 Objective-C 中生成 NSManagedObject 子类。
- 创建桥接头文件。
- 为生成的 Objective-C 类编写 Swift 扩展。
- 在 Swift 中使用扩展的 Objective-C 类。
我执行了上述步骤,但当我尝试调用下面的代码时,出现Value of type Person, has no member syHello 错误。
Objective-C :
@interface Person (CoreDataProperties)
@property (nullable, nonatomic, retain) NSString *name;
@property (nullable, nonatomic, retain) NSSet<Pet *> *pets;
@end
@interface Person (CoreDataGeneratedAccessors)
- (void)addPetsObject:(Pet *)value;
- (void)removePetsObject:(Pet *)value;
- (void)addPets:(NSSet<Pet *> *)values;
- (void)removePets:(NSSet<Pet *> *)values;
@end
swift :
public extension Person {
public func sayHello() {
print("Hello! My name is \(self.name).")
}
}
swift :
let myPerson = NSEntityDescription.insertNewObjectForEntityForName("Person", inManagedObjectContext: myAppDelegate.managedObjectContext) as! Person
myPerson.sayHello()
我需要做什么才能让编译器在我的 Person 类上选择我的扩展,以便我可以对其调用 sayHello?
最佳答案
正如 Martin R 指出的那样;我的 Swift 文件未连接到我的目标。将我的 Swift 文件替换为新文件,并且成功了。
关于objective-c - 无法通过 Swift 扩展向 Objective-C NSManagedObject 子类添加方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34255599/