未提供核心数据属性
我决定在核心数据中为我的一个实体添加一个NSNumber属性。我清理了代码并从模拟器中删除了应用程序。然后,我在我的appDelegate中添加了以下代码,它告诉我我的NSNumber属性不存在。未提供核心数据属性
People *PeopleA = [NSEntityDescription insertNewObjectForEntityForName:@"People" inManagedObjectContext:context];
PeopleA.name = @"Paul";
PeopleA.number = [NSNumber numberWithInt:12];
name属性工作得很好,以前做过,它一直工作。但是,当它到达PeopleA.number
崩溃有:
-[People setNumber:]: unrecognized selector sent to instance 0x4d5eeb0
所以我做了一个po 0x4d5eeb0
,看到有一个name属性,但不是一个数字。我的核心数据类应该很好,因为我有XCode为我做。
可能是什么问题?
这里是我的People.h
#import <Foundation/Foundation.h>
#import <CoreData/CoreData.h>
@class Group;
@interface People : NSManagedObject {
@private
}
@property (nonatomic, retain) NSString * name;
@property (nonatomic, retain) id image;
@property (nonatomic, retain) NSNumber * number;
@property (nonatomic, retain) Group * group;
@end
People.m
#import "People.h"
#import "Group.h"
@implementation People
@dynamic name;
@dynamic image;
@dynamic number;
@dynamic group;
@end
PO 0x4d5eeb0打动了我:
<People: 0x5932290> (entity: People; id: 0x59322f0 <x-coredata:///People/t83A9C7D9-4F7A-4189-9EC5-7695968A29552> ; data: {
group = nil;
name = Paul;
如有疑问,请将其删除。
我结束了删除我的两个xcdatamodel文件和xcdatamodeld文件。还在各自的文件夹中删除它们。然后我创建了一个新的。起初有一些问题,但现在它确实有效。
我有一个xcode的小问题,我的Group.h
文件没有addPeople
方法。所以它表示它可能不会对该方法或其他任何方法做出响应。它在构建时也会给我一个Lexical or Preprocessor Issue: 'Group.h' file not found
错误,但一切似乎仍然有效。
我还不知道发生了什么事。感谢大家的建议。
尝试命名number
属性不同的东西,比如theNumber
。有几个已知的reserved words in Core Data attributes,和一个未知的数字(没有双关语意图),这是没有记录 - 你可能已经偶然发现另一个。
在调试器中打印对象应该为您提供在类中定义的所有属性,无论它是由上下文拥有的NSManagedObject子类还是普通的vanilla自定义类。调试器打印输出不仅缺少number
属性,还有image
。
真的,唯一可能发生的方式是,如果您没有将新版本的类文件添加到目标中,但实际上是使用缺少新属性的旧版本。
检查旧文件的目标和/或检查新版本是否已正确添加到构建目标。
+1优点:重新检查文件的目标。 XCode中功能最强大,用户最不友好的功能之一。 – RyanR
我不确定这是你在说什么,但我去我的目标称为选择 - >构建阶段选项卡 - >编译源下拉列表中,我看到Pick.xcdatamodeld在那里,Pick.xcdatamodel是有但不是我的新版本选择2.xcdatamodel。这可能是问题吗?如果是这样,我该如何解决这个问题? – tazboy
只需使用“ - ”按钮删除旧版本,并添加新的“+”即可。这是您可以自定义编译为源代码的文件的位置。通常这是由Xcode自动设置和维护的,但是当你交换很多东西时会感到困惑。顺便说一下,'Pick 2.xcdatamodel'是否有空间?如果是这样,您可能需要将其更改为下划线以防万一。 – TechZen
请发布您的People.h'内容。 – akashivskyy
我编辑帖子以包含'People.h' – tazboy
您是否在'People.m'文件中合成了您的'number'属性?你有@动态号码吗? – akashivskyy