问题标签 [nsfetchrequest]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
5 回答
11258 浏览

iphone - 核心数据,NSFetchRequest返回NSDictionaryResultType时如何获取NSManagedObject的ObjectId?

我有一个NSFetchRequest返回对象属性的NSDictionaryResultType. 是否也可以在此字典中获取对象的 ObjectId?否则,我将需要使用返回类型NSManagedObjectResultType对于大量返回的项目要慢得多的查询来运行。

0 投票
1 回答
958 浏览

iphone - 是否可以在获取请求期间让 Core Data 对 To-Many 关系的“多”部分进行排序?

我正在使用 Core Data 来缓存大量信息,并且在我的托管对象之间设置了多对多关系。自然地,我使用 NSFetchRequest 来获取该关系的奇异方面的数组。但是,我使用关系的“多”端填充 UITableView,并且我希望在提取数据时按字母顺序对其进行排序。

如果我不清楚,这里有一个例子:

“员工”和“老板”都是一对多关系中的 NSManagedObjects - 每个老板都有很多员工,但员工只有一个老板。在检索了一系列老板之后,我推送了一个包含员工列表的 UITableViewController。我希望在 NSFetchRequest 期间对员工进行预排序,以便更轻松地显示它们。这是可能的,我将如何去做?

0 投票
1 回答
933 浏览

core-data - 如何序列化 NSPredicate 对象?

有没有办法检查 NSPredicate 对象以将其序列化为 URL?我正在尝试远程检索数据,并且需要将谓词对象转换为带有服务器理解的查询字符串参数的 URL。

这是受 WWDC 2010 中的一个名为“构建服务器驱动的用户体验”的演讲启发的,演讲者在演讲中谈到了使用 Core-Data 和服务器后端。我已经关注了会议视频和幻灯片,但被困在序列化点上。例如,有一个Person对象,我试图获取所有名字为“John”的人。我正在使用NSManagedObjectContext被调用的子类RemoteManagedObjectContext,它覆盖了该executeFetchRequest方法,并且应该将调用发送到服务器。提取请求被创建为(省略的非必要部分):

现在在 的自定义子类中NSManagedObjectContext,如何将获取请求序列化为适合服务器的查询字符串参数。因此,鉴于上述获取请求,相应的 URL 将是:

可以获得返回的谓词的字符串表示,

我可以解析以获取参数name,并且endpoint。但是,是否可以在不解析字符串的情况下做到这一点?RemoteManagedObjectContext这是该类的部分实现。

0 投票
1 回答
398 浏览

iphone - 核心数据:移动到详细视图时获取崩溃

我的应用程序是多视图。主视图通向包含核心数据事物的详细视图。当我尝试在主视图中按下按钮以转到详细视图时,出现以下崩溃:

Core Data 代码过去在另一个项目中运行良好,但在这个项目中崩溃了。没有核心数据的视图没有问题

我怎样才能解决这个问题?任何帮助表示赞赏


更新

这是获取代码:

0 投票
6 回答
5174 浏览

objective-c - -[NSCFNumber count]:无法识别的选择器

我有一些核心数据代码完全遵循 Apple 的示例代码获取满足给定函数示例的属性值)。我使用它来获取字段的最大值,因此我可以在插入该实体类型的下一个对象时增加它。

我根本无法让代码工作,直到我将我的 Store Type 从 切换NSXMLStoreTypeNSSQLiteStoreType,然后突然之间一切似乎都正常了。然而,事实并非如此。我注意到它总是会返回相同的值,即使我插入了更高的对象。但是,在我退出并重新打开后(因此数据被持久化并读回),它会用新的插入更新。

所以我开始在每次插入后提交和保存。不过,在第一次“自动保存”之后,我收到以下错误(连续两次):

-[NSCFNumber count]:无法识别的选择器发送到实例 0x100506a20

当我执行一次获取请求时,会发生这种情况(连续两次):

更新

我通过 Zombies 工具运行了我的代码,并且能够查看出现错误的对象。malloc运行分配它的调用是: -[NSUserDefaults(NSUserDefaults) initWithUser:]. 由于我没有设置任何自己的默认值,我不知道这可能是什么对象。

更新 2

我在我的所有代码中搜索“发布”并注释掉静态分析器没有抱怨的每一个release或。autorelease我仍然得到错误。我什至在我的代码中注释掉最后一个release/ autorelease,但仍然得到它。现在我相当确定我自己的代码没有过度发布。

更新 3

这个帖子似乎有同样的问题,但他的解决方案没有意义。他将结果类型从 更改NSDictionaryResultTypeNSManagedObjectResultType,这会产生不正确的结果。而不是返回单个值(max我正在寻找的,它返回托管对象上下文中我的实体类的每个对象。

这是堆栈跟踪的最顶层(当我第一次让它在异常中中断时):

我在网上其他地方的许多论坛上都看到过这个问题,但没有人提供可行的解决方案。应普遍要求,我在下面添加了自己的代码。稍微解释一下,我的实体名称是Box,我试图获取的属性是“sortOrder”,一个Int 32属性。

0 投票
1 回答
944 浏览

objective-c - NSFetchRequest 中函数计数的表达式返回比常规 fetch 少一

在我第一次尝试在获取请求中使用 NSExpression 时,我得到的结果与我使用常规获取请求时得到的结果一致。

MO“Subject”与 MO“Book”有一对多的关系,相反的关系是一对一。

这是我正在使用的 NSExpression fetchRequest:

(这个想法是向用户提供一个确认面板,告知他们如果他们选择删除所选主题,将通过级联规则删除多少本书 - 此时不会出错。)

这是我用作测试的简单 fetchRequest:

发生的情况是,如果 NSExpression fetchRequest 返回计数为 n,则简单的 fetchRequest 返回计数为 n + 1。

考虑到 fetchRequests 本身可能会以某种方式改变数据,我尝试以不同的顺序运行它们,但结果相同。

也许使用表达式的请求会跳过尚未保存的 MO?不会。我运行了一个测试,创建了一堆新的“Book” MO,以查看表达式请求和常规请求之间的差距是否会扩大。它仍然是一个关闭。

知道我做错了什么吗?

0 投票
1 回答
515 浏览

iphone - CoreData - 来自子实体的唯一值......?

iPhone CoreData 时髦的 fetch-request:我想构建函数来检索我的产品的 Unique-CategoryCodes 数组我有实体“产品”并且有一个字段(属性)类别。当然,类别是与类别实体的关系。

如果我的功能是:

}

MyResult: 2010-12-10 05:55:33.683 iApp[3453:307] -[ShoppingHelper uniqueCategoriesWithQuery:] [Line 1193] ({ Category = "0x495a200 "; }, { Category = "0x4959ce0 "; } )

代码运行良好,但我根本无法使用结果。我有我的类别...但是 ID' 而不是 NSStrings.. 如何使用它?

也许我应该使用:[re​​quest setPropertiesToFetch:[NSArray arrayWithObject:[entityProperties objectForKey:@"Categories.Code"]]];

在不同的 NSDictionary 中获取 NSStrings?

或者

按 ID 查找类别 - 怎么做?

0 投票
1 回答
299 浏览

core-data - 与 Fetch Requests 建立基本关系

我想与 Core Data 中的两个实体建立基本关系,但这种关系要么没有保存,要么工作不正常,我不知道为什么。

这两个实体是CharacterAvatar,它是一对一的关系。一个角色可以有 1 个头像。从技术上讲,它应该是“一个头像可以被多个角色拥有”,但我稍后会处理。

我想添加角色并为他们分配头像。

Core Data 中已经有 10 个头像和 1 个角色,这两个我都通过终端和 SQLite 进行了验证。

问题是,我遇到了麻烦“通过名称查找头像,然后将关系保存到角色”。

至今,

我设置了一个名为:“frqAvatarWithName”的获取请求,其中 Predicate 具有以下结构:

[引用]

名称 == $AVATAR_NAME

[/引用]

就是这样:我可以找到一个具有特定名称的头像;然后我可以与角色建立关系。

问题 1:它开始执行查询,但从不显示有多少记录。

我在调试模式下遇到EXC_BAD_ACCESS错误,我已将其追溯到获取请求模板处理 - 所以,这一定是错误的,或者我做错了。

问题 2:我不确定我是否正确设置了这种“基本”关系。

[代码]

[/代码]

0 投票
3 回答
2874 浏览

iphone - 加快核心数据获取

这是在 iOS 上。

我有一个包含大约 350 000 个对象的核心数据库。对象(产品)有两个属性:“条形码”和“名称”。用户可以通过搜索“Barcode”来搜索对象,应该返回“Designation”。一切正常,只是速度很慢。我使用的代码是:

由于我只想获取一个对象,有没有办法加快速度?

如果我在启动时将每个对象加载到一个数组中,我的应用程序启动速度会非常慢,并且会占用大量 RAM。

提前致谢!

编辑:我添加了 [fetch setFetchLimit:1]; 这加快了一点。但是对象在数据库中越往下,速度就越慢。

0 投票
1 回答
5679 浏览

iphone - 核心数据:获取特定对象的多对多关系中的所有实体?

在我的 iPhone 应用程序中,我使用具有两个实体(ItemProperty)的简单核心数据模型:

项目
名称
属性

属性
名称

项目有一个属性(名称)和一个一对多的关系(属性)。它的反比关系是item属性有两个属性对应的反比关系。

现在我想在两个级别的表格视图中显示我的数据。第一个列出所有项目;选择一行时,将推出一个新的UITableViewController在我的UinavigationController的堆栈上。新的 UITableView 应该显示所选项目的所有属性(即它们的名称)。

为了实现这一点,我使用了一个NSFetchedResultsController存储在实例变量中。在第一层,像这样设置 NSFetchedResultsController 时一切正常:

但是,在二级UITableView上,我好像做错了什么。我以类似的方式实现了 fetchedresultsController:

现在越来越奇怪了。上面的NSLog语句返回了所选项目的正确数量的属性。但是, UITableViewDelegate 方法告诉我没有属性:

相同的实现在第一级上运行良好。

越来越奇怪了。我实现了某种 UI 来添加属性。我通过创建一个新的Property实例Property *p = [NSEntityDescription insertNewObjectForEntityForName:@"Property" inManagedObjectContext:self.moContext];,设置关系并调用[self.moContext save:&error]。这似乎error仍然有效nil,并且对象被保存(我可以在记录Item实例时看到属性的数量,见上文)。但是,不会触发委托方法。这在我看来是因为 fetchRequest(Controller) 可能搞砸了。

有任何想法吗?我搞砸了第二个获取请求吗?这是为特定实例获取多对多关系中所有实体的正确方法吗?