如何在 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 中创建实体文件?的主要内容,如果未能解决你的问题,请参考以下文章

Swift:如何在应用程序中创建核心数据实体 [关闭]

无法理解如何在 iOS Swift 中创建具有多列的表

使用 CoreAudio 以编程方式在 Swift 中创建聚合音频设备

如何使用 Swift 4 在 iOS 9+ 中创建瀑布布局

如何在swift ios中创建指定的数据结构?

如何使用 Swift 在 iOS 应用中创建热点网络