Core data CoreData insertNewObjectForEntityForName导致崩溃
我一直在追踪一只虫子,但我想不出来。我有一个类,它接受一组解析数据,然后调用一个方法为从解析数据创建的每个元素创建新的核心数据文章对象。我在下面展示了如何声明NSManagedObjectContext 您还将看到该方法Core data CoreData insertNewObjectForEntityForName导致崩溃,core-data,nsmanagedobject,Core Data,Nsmanagedobject,我一直在追踪一只虫子,但我想不出来。我有一个类,它接受一组解析数据,然后调用一个方法为从解析数据创建的每个元素创建新的核心数据文章对象。我在下面展示了如何声明NSManagedObjectContext 您还将看到该方法 Article.createFLOArticleWithStructure(element, inManagedObjectContext: self.articleContext) 我将此方法放在扩展中以清理代码。方法如下所示 import Foundation clas
Article.createFLOArticleWithStructure(element, inManagedObjectContext: self.articleContext)
我将此方法放在扩展中以清理代码。方法如下所示
import Foundation
class FLODataHandler : NSObject, FLOConnectionHandlerDelegate, FLOParserHandlerDelegate, TriathleteParserHandlerDelegate, VeloNewsParserHandlerDelegate, CyclingNewsParserHandlerDelegate, RoadBikeActionParserHandlerDelegate, IronmanParserHandlerDelegate
{
let appDelegate: AppDelegate = UIApplication.sharedApplication().delegate as! AppDelegate
lazy var articleContext: NSManagedObjectContext = self.appDelegate.managedObjectContext!
func floParserHandlerDidFinishParsing(parserHandler : FLOParserHandler)
{
for element in self.floParserHandler!.XMLParsedDataArray!
{
// The pubDate, tilte and link and indicator have been added to the titleLinkArray. I will now add the data to a Core Data Entity
// in the Article+NewsFeedArticle class.
Article.createFLOArticleWithStructure(element, inManagedObjectContext: self.articleContext)
}
}
分机码
extension Article
{
class func createFLOArticleWithStructure(articleStructure: DateTitleLink, inManagedObjectContext context: NSManagedObjectContext) -> (Article)
{
// Core data is much simpler in Swift. I have not commented this code since I do not know if it's working yet.
var article = Article()
//var entity = NSEntityDescription("Article", inManagedObjectContext: context)
let fetchRequest = NSFetchRequest(entityName: "Article")
let predicate = NSPredicate(format: "feed == 'FLO Cycling' AND title == %@", articleStructure.title!)
let sortDescriptor = NSSortDescriptor(key: "pubDate", ascending: true)
fetchRequest.sortDescriptors = [sortDescriptor]
// Set up NSError
var fetchError : NSError?
// When you perform a fetch the returned object is an array of the Atricle Entities.
let fetchedObjects = context.executeFetchRequest(fetchRequest, error: &fetchError) as! [Article]
if fetchedObjects.count > 1
{
println("Error! in Article+NewFeedArticle.swift")
}
else if fetchedObjects.count == 0
{
article = NSEntityDescription.insertNewObjectForEntityForName("Article", inManagedObjectContext: context) as! Article
article.feed = "FLO Cycling"
article.pubDate = articleStructure.date!
article.title = articleStructure.title!
article.link = articleStructure.link!
article.theNewArticle = NSNumber(int: 1)
var error : NSError?
if(context.save(&error))
{
println(error!.localizedDescription)
}
}
else if fetchedObjects.count == 1
{
article = fetchedObjects[fetchedObjects.endIndex - 1]
}
return article
}
当我运行代码时,我在扩展代码的下一行被停止,并收到以下错误
article = NSEntityDescription.insertNewObjectForEntityForName("Article", inManagedObjectContext: context) as! Article
CoreData:错误:无法在上调用指定的初始值设定项
NSManagedObject类“FLOCycling1\u 1\u 1.文章”核心数据:警告:
无法为实体“Article”加载名为“Article”的类。类不
找到,改为使用默认NSManagedObject。无法计算的值
键入“NSManagedObject”0x7fe59c3515e0至
'FLOCycling1_1_1.Article'0x106139f70
我在网上读过关于在数据模型中使用前缀的内容。我添加了这个,但没有用。如果您知道我如何修复此错误,我将非常感谢您的帮助
增加****
这是Article.swift文件
import Foundation
import CoreData
@objc class Article: NSManagedObject
{
@NSManaged var feed: String
@NSManaged var link: String
@NSManaged var pubDate: NSDate
@NSManaged var theNewArticle: NSNumber
@NSManaged var title: String
}
保重,
Jon这个问题与我在这一行的文章声明有关
var article = Article()
在Swift版本中,调用上面的代码行为文章分配并初始化内存。在Objective-C版本的代码中,我调用了以下代码
Article *article = nil;
虽然我不知道为什么,分配和初始化文章是个问题。我在这里找到了这篇关于类似错误的帖子
为了解决这个问题,我将代码改为
var article = Article?()
为了清楚起见,我还将Article类更改为ProjectName.Article
我希望这对其他人有帮助
保重,
Jon你能给我们看一下你的课堂文章并确认它是你目标的一部分吗?你说的目标是指它包含在构建阶段的编译源代码中吗?我刚刚注意到CoreData.framework没有包含在项目中。我使用了cookie cutter核心数据模板。我必须自己添加这个吗?我添加了CoreData.framework,但这并没有解决问题。仅供参考。您使用哪个版本的Xcode?我使用的是Xcode 7 beta版?我也有类似的问题,但当我尝试将文章类更改为ProjectName.Article时,它会立即删除句点,以便显示ProjectNameArticle?我使用的是当前版本的Xcode。我不记得我发布这个问题时用了什么。