无法通过Swift扩展将方法添加到objective-c NSManagedObject子类

时间:2015-12-13 19:53:46

标签: objective-c swift

Xcode 7.2中NSManagedObject子类的代码生成器与Objective-C的代码生成配对。 (无多种关系的访问方法。)

所以我想这样做:

  • 在Objective-C中生成NSManagedObject子类。
  • 创建桥接头文件。
  • 为生成的Objective-C类编写Swift扩展。
  • 在Swift中使用扩展的Objective-C类。

我执行上述步骤,但是当我尝试调用下面的代码时,我得到类型为Person的值,没有成员syHello 错误。

目标-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

夫特:

public extension Person {

    public func sayHello() {

        print("Hello! My name is \(self.name).")

    }

}

夫特:

let myPerson = NSEntityDescription.insertNewObjectForEntityForName("Person", inManagedObjectContext: myAppDelegate.managedObjectContext) as! Person
myPerson.sayHello()

我需要做什么才能使编译器在我的Person类中选择upp我的扩展名,以便我可以在其上调用sayHello?

1 个答案:

答案 0 :(得分:0)

正如Martin R指出的那样;我的Swift文件没有连接到我的目标。用一个新文件替换了我的Swift文件,它起作用了。