ios - CoreData - insertNewObjectForEntityForName 无法设置属性

标签 ios objective-c core-data runtime-error

我将 CoreData 与一个实体和该实体的两个属性一起使用。
实体: Binder
属性:名称、上次打开
、br> 我可以毫无问题地插入实体的新对象,我也可以设置它的名称,但我无法设置它的 lastOpened 属性。
这是我的代码:

Binder *newBinder = [NSEntityDescription insertNewObjectForEntityForName:@"Binder" inManagedObjectContext:context];
[newBinder setName:@"Binder"];
[newBinder setLastOpened:[NSDate date]]; //Tried this first
newBinder.lastOpened = [NSDate date]; //No compiler warning either

但是,当我运行应用程序时,出现错误 -[Binder setLastOpened:]: unrecognized selector sent to instance 0x9688870

我可以验证显示的内存地址实际上是正确的 Binder 对象。关于为什么我可以设置一个属性而不是另一个属性的任何想法?谢谢。
Binder .h:

#import <Foundation/Foundation.h>
#import <CoreData/CoreData.h>

@class Cards;

@interface Binder : NSManagedObject

@property (nonatomic, retain) NSString * name;
@property (nonatomic, retain) NSDate * lastOpened;
@property (nonatomic, retain) NSSet *cards;
@end

@interface Binder (CoreDataGeneratedAccessors)

- (void)addCardsObject:(Cards *)value;
- (void)removeCardsObject:(Cards *)value;
- (void)addCards:(NSSet *)values;
- (void)removeCards:(NSSet *)values;

@end

Binder .m:

#import "Binder.h"
#import "Cards.h"


@implementation Binder

@dynamic name;
@dynamic lastOpened;
@dynamic cards;

@end

最佳答案

Xcode 有时会搞砸重建对 xcdatamodel 的更改。下次,尝试做一个干净的构建。

此外,您不应该硬核类名字符串,因为它会破坏重构。

[NSEntityDescription insertNewObjectForEntityForName:NSStringFromClass([Binder class]) inManagedObjectContext:context]

此外,为类名和托管对象添加前缀。 (例如,比 Binder 更喜欢 XYZBinder)。您将避免将来因 namespace 冲突而感到悲伤。

关于ios - CoreData - insertNewObjectForEntityForName 无法设置属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15706796/

相关文章:

ios - -Objcflags可以选择性地应用于静态库吗?

ios - 如何在 nginx 中设置前向保密,以便具有默认 ATS 设置的 iOS9 (Xcode7) 应用程序可以连接到我的服务器?

ios 如何从应用商店 url 中提取 ID 号部分?

objective-c - 在方法名称中使用关键字的危险

iphone - 如何使用 Interface Builder 添加导航 Controller ?

swift - 从过去 7 天的核心数据中提取实体

ios - Swift 3.0 - NSNumber 和 Int 不能应用于操作数

ios - 异常 'NSInternalInconsistencyException' ,原因 : 'Could not load NIB in bundle: . ..有人可以找出这有什么问题吗

ios - Swift 中从 Core Data 异步加载图像

objective-c - NSSet 的 containsObject 和快速枚举哪个更好?