WYS*_*WYS 3 xcode parsing objective-c ios xcode4
我正在创建我的NSXMLParser,我将委托传递给相关对象.
当我的解析器到达名为"building"的元素时,它将使用此代码初始化一个新的Building.
if ([elementName isEqualToString:@"building"])
{
building = [[Building alloc] initWithAttributes:attributeDict parent:self children:nil parser:parser];
}
Run Code Online (Sandbox Code Playgroud)
我在Building类中创建了自己的初始化程序,它是NSManagedObject的子类.(从Core Data自动创建).
它看起来像这样:
- (id)initWithParser:(NSXMLParser *)parser
{
if (self = [super init])
{
[parser setDelegate:self];
}
return self;
}
Run Code Online (Sandbox Code Playgroud)
但是当我运行它时出现这个错误:"无法在NSManagedObject类上调用指定的初始化程序".
Building类应继续解析构建下的标记,并从XML文件中创建对象图.
换句话说,Building类需要知道如何解析,填充实例变量,创建实体并将其保存到对象图中.(只是为了理解,这可以忽略)
我做错什么了吗?我可能不会创建自己的初始化程序?也许我应该创建一个继承自NSObject的类并创建我的解析器,然后从那里以正常的方式创建实体?
对不起这篇长篇文章.
Rob*_*ill 10
查看NSManagedObjects及其子类的对象生命周期的文档.生命周期与普通的NSObject类型对象不同,如果要使用Core Data,则需要了解它.
NSManagedObjects的指定初始化initWithEntity:insertIntoManagedObjectContext:程序是您实现的任何自定义初始值设定项必须首先调用此方法.但是,正如文档中所述,不鼓励您覆盖此方法.
相反,在awakeFromInsert或中进行自定义初始化awakeFromFetch.要创建NSManagedObject的新实例,请调用initWithEntity:insertIntoManagedObjectContext:或使用便捷方法+[NSEntityDescription insertNewObjectForEntityForName:inManagedObjectContext:].
| 归档时间: |
|
| 查看次数: |
5833 次 |
| 最近记录: |