首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何检查UIManagedDocument是否为空

如何检查UIManagedDocument是否为空
EN

Stack Overflow用户
提问于 2012-08-04 04:57:28
回答 1查看 206关注 0票数 0

打开UIManagedDocument实例(文档状态是否正常?)时,如何检查UIManagedDocument是否为空?这里的“空”表示文档中根本没有实体。

或者我可以在它仍然关闭的时候检查它的空吗?

代码语言:javascript
复制
if (self.photoDatabase.documentState == UIDocumentStateClosed) 
{ 
    [self.photoDatabase openWithCompletionHandler:^(BOOL success) {}];
    [self setupFetchedResultsController];  

    if ( // check if document is empty  )
        {  
            [self fetchFlickrDatatoDocument:self.photoDatabase]; 
        }
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-08-04 05:43:18

这里有几个答案。

首先,当你创建文档时,它肯定是空的。您可以只查询文件系统,查看该文件是否存在。

如果它仍然是空的,为什么你首先要创建它呢?

如果您习惯于打开空的数据库文件,那么您可以通过多种方式来判断它是否为“空”,这取决于“空”的含义。

执行fetch以获取记录数。如果返回0,则数据库为空。

对保存数据库元数据的“特殊”实体执行fetch操作。如果它不在那里,那么数据库是空的。

编辑

要检查并查看是否没有实体,只需要求计数...

代码语言:javascript
复制
NSFetchRequest fetchRequest = [NSFetchRequest fetchRequestWithEntityName:@"MyEntity"];
NSError *error = nil;
NSUInteger count = [managedObjectContext countForFetchRequest:fetchRequest error:&error];
if (count == NSNotFound) {
    // Handle error
} else if (count == 0) {
    // The document is empty, i.e., has no entities of this type
} else {
    // The document contains <count> entities.
}

或者,您可以只获取一个实体...

代码语言:javascript
复制
NSFetchRequest fetchRequest = [NSFetchRequest fetchRequestWithEntityName:@"MyEntity"];
fetchRequest.fetchLimit = 1;
NSError *error = nil;
NSArray *objects = [managedObjectContext executeFetchRequest:fetchRequest error:&error];
if (objects == nil) {
    // Handle error
} else if (objects.count == 0) {
    // The document is empty, i.e., has no entities of this type
} else {
    // The document contains at least one entity.
}

编辑

抱歉,菲利普,最后那句话对我没什么意义。如何要求数据库告诉我它有多少个特定实体类型的项,假设它有任何实体类型。

就像孩子们的纸牌游戏:

我:嘿,数据库,你有四个吗?CoreData:去钓鱼。

现在,我对您的评论的最好猜测是您混淆了数据库模型和数据库记录。

在创建数据库时,您为其提供了一个模型。您是使用GUI还是使用代码创建模型的?无论哪种方式,您都已经告诉数据库它将包含的实体类型,以及它们之间的关系。

当您最初创建数据库时,它已经知道所有实体(这就是托管对象模型的全部内容)。核心数据托管对象上下文需要持久化存储,而持久化存储又需要托管对象模型。

因此,当核心数据堆栈完全实例化时,它就拥有了关于数据库中将有哪些类型的实体所需的所有知识。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11803202

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档