gpt4 book ai didi

ios - CoreData - insertNewObjectForEntityForName 无法设置属性

转载 作者:行者123 更新时间:2023-11-29 13:16:22 24 4
gpt4 key购买 nike

我将 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com