objective-c - 无法通过 Swift 扩展向 Objective-C NSManagedObject 子类添加方法

标签 objective-c swift

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/

相关文章:

ios - iphone 如何推送浏览量?

objective-c - 重命名 NSString 常量

swift - 通用函数和子类。谁能解释这个编译错误?

swift - 如何从获取请求数组结果中分配键,并从空字典中的文本字段输入中分配值?

ios - 基于变量的索引路径中项目的 UICollectionView 单元格

iphone - iOS将音频从一台iOS设备传输到另一台iOS设备

ios - UINavigationBar:以编程方式更改字体

ios - 如何在iOS中横向和纵向旋转图像?

ios - swift 如何转换时间字符串 +4 :00 to Timezone

ios - 将枚举案例的关联值提取到元组中