ios - 当上下文为 nil 时,Swift Temp CoreData 对象无法设置 ivars

标签 ios swift core-data

我有一个 CoreData 对象,我想实例化(临时使用)但我不想保存或插入到上下文中以实现持久性。

我想创建的对象的类定义是这样的:

import Foundation
import CoreData

@objc(USubmission)

class USubmission: NSManagedObject {

    @NSManaged var subid: NSNumber

我这样创建对象(临时使用但不持久)

let entitiyDesc = NSEntityDescription()
entitiyDesc.name = "USubmission"
entitiyDesc.managedObjectClassName = "USubmission"
let sub = USubmission.init(entity: entitiyDesc, insertIntoManagedObjectContext: nil)

但是,当我设置临时对象的 ivars 之一时,出现以下错误:

sub.subid = 0

错误:

[USubmission setSubid:]: unrecognized selector sent to instance

我检查了对象,它看起来像是正确的对象,而不是 NSManagedObject 对象。

为什么当上下文为 nil(临时对象)而不是存在上下文时会出现此错误?

最佳答案

您必须从您的 ManagedObjectContext 创建一个实体描述:

let entitiyDesc = NSEntityDescription.entityForName("USubmission", inManagedObjectContext: **yourContext**)

如果您不想保存使用实体创建的对象,那么将 nil 传递给 insertIntoManagedObjectContext,就像您已经这样做的那样:

let sub = USubmission.init(entity: entitiyDesc, insertIntoManagedObjectContext: nil)

关于ios - 当上下文为 nil 时,Swift Temp CoreData 对象无法设置 ivars,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37223307/

相关文章:

iphone - 倒计时模式下的 UIDatePicker 不支持调整大小?

ios - Alamofire 在 iOS APP 中将正文添加为字符串

swift - pressesBegan 未在 Playground Book 中调用

ios - 代码 : CoreData generated property is "double" instead of "NSNumber"

objective-c - NSSortDescriptor 应该对 NSDates 进行排序

ios - 遇到问题 "reaching"我的覆盖准备功能以编程方式更改选项卡栏 Controller 中的 View

ios - 使用http方案深度链接iOS

iphone - 如何在命令行中捕获 OCUnit 的测试失败/成功?

objective-c - 用于 Cocoa OS x 的语音到文本转录 API

core-data - Xcode4 核心数据关系