如何在 iOS 编程中在 Swift 中创建实体文件?
Posted
技术标签:
【中文标题】如何在 iOS 编程中在 Swift 中创建实体文件?【英文标题】:How to create Entity file in Swift in iOS programming? 【发布时间】:2014-07-02 09:36:38 【问题描述】:我想在我的基于 Swift 和 Xcode 6 的 ios 应用程序中使用 Core Data,所以我首先创建了 XXX.xcdatamodel
文件并将三个实体及其属性添加到文件中。但是,当我尝试通过关注“编辑器”| 创建NSManagedObject
的子类时Xcode菜单中的“创建ManagedObject子类”,生成的文件是Objective-C的.h
和.m
文件,而不是我想要的.swift
文件。
结果,当我尝试运行模拟器时,出现错误:NSFetchRequest could not locate an NSEntityDescription for entity name 'XXX'
,我认为这是因为我的项目中没有像XXX
这样的.swift
文件。
那么我如何创建一个NSManagedObject
的子类,它基于上面XXX.xcdatamodel
文件中定义的实体?我不喜欢创建一个新的 swift 文件并手动逐个编写这些属性的想法,因为每个实体上的属性数量超过 40。所以我宁愿通过类似的方式自动创建它我在 Objective-C 中使用过的 Xcode 菜单。
【问题讨论】:
【参考方案1】:我所做的是使用生成的 .h 和 .m 文件。要使实体类对 swift 可见,请将实体类标头的#import 添加到 Bridging Header。
【讨论】:
这是我第一次尝试,但仍然得到同样的错误。 你能做 NSEntityDescription.insertNewObjectForEntityForName("EntityName", inManagedObjectContext:managedObjectContext) 吗?【参考方案2】:在 Objective-c 中,代码如下所示:
#import <Foundation/Foundation.h>
#import <CoreData/CoreData.h>
@interface Human : NSManagedObject
@property (nonatomic, retain) NSString *name;
@end
上面是.h,下面是.m
#import "Human.h"
@implementation Human
@dynamic name;
@end
如文档中所述,swift 处理所有底层组件,因此实际上很容易转换。
import Cocoa
class Human: NSManagedObject
@NSManaged var name : NSString
【讨论】:
以上是关于如何在 iOS 编程中在 Swift 中创建实体文件?的主要内容,如果未能解决你的问题,请参考以下文章