首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >直接从coredata实体获取实体属性

直接从coredata实体获取实体属性
EN

Stack Overflow用户
提问于 2017-10-26 06:58:40
回答 4查看 804关注 0票数 0

我在CoreData中有一个叫做设备的实体。设备具有以下属性:名称、型号、制造商、所有者。所有属性都是字符串类型的。我使用以下代码从实体设备中使用谓词获取值

代码语言:javascript
复制
 NSEntityDescription *entity = [NSEntityDescription entityForName:@"Devices" inManagedObjectContext:self.managedObjectContext];

NSFetchRequest *request = [[NSFetchRequest alloc] init];
[request setEntity:entity];

request.fetchLimit = Device_LIMIT;
NSSortDescriptor *sortDisc = [NSSortDescriptor sortDescriptorWithKey:@"model" ascending:YES];
[request setSortDescriptors:@[sortDisc]];
NSError *error;
NSArray *array = [self.managedObjectContext executeFetchRequest:request error:&error];   
if (array) {

    arrName = [array valueForKey:@"Name"];
}

return arrName;

我得到了想要的结果--这个way.But,我的问题是,如何才能直接从设备实体中为Name属性获取数组,而不添加任何if-否则或条件条件的数组。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2017-10-26 15:15:14

您需要从Core数据中获取一个数组来获取这些值--这正是Core数据的工作方式。您可以将代码更改为使用NSDictionaryResultType,但这样就可以得到一个字典数组,而不是托管对象数组。您所做的是正确的,在不获取数组和从该数组中提取名称的情况下,获取名称值是没有捷径的。

票数 0
EN

Stack Overflow用户

发布于 2017-10-26 07:30:59

执行for-循环将值添加到arrName中,如下所示:

代码语言:javascript
复制
NSMutableArray *arrName = [NSMutableArray new];

for (NSManagedObject *object in array) {
    [arrName addObject:object[@"Name"]];
}
票数 0
EN

Stack Overflow用户

发布于 2017-10-26 07:51:27

只有在fetch请求失败时才返回零数组。

代码的结构应该是,如果没有数组,就应该处理错误。

编辑:这是相当正确的大多数方法返回的东西,并接受一个错误作为一个论点在可可。通常,如果不返回任何内容,则应该检查错误。

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

https://stackoverflow.com/questions/46947717

复制
相关文章

相似问题

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