标签: nsfetchrequest

核心数据获取请求关系属性谓词

我有父亲实体.父亲与孩子有一对多的关系.孩子有属性,其中一个是名字.

我想执行一个获取请求来获取:Father.name ="Joe"和名为joe的父亲我想要获取那些名为Ken的孩子:Child.name ="Ken"

所以我的主要目标是找到肯的父亲的名字叫乔.

我尝试了一些复合谓词和其他东西,但还没有运气.

知道如何解决这个问题吗?

谢谢

core-data nspredicate nsfetchrequest ios

2
推荐指数
1
解决办法
3019
查看次数

获取多个实体,它们之间没有关系

我有一个包含多个实体的核心数据模型,每个实体对应一个视图控制器,用户为每个实体插入信息,例如:

轮胎(第一个实体) - 类型(第一个属性),成本(第二个属性).玻璃(第二个实体) - 颜色(第一个属性),大小(第二个属性),成本(第三个属性).

对于每个实体,我有一个带有文本字段的MVC,用户为每个实体插入信息,因此如果按下轮胎按钮,则为其他实体插入一种轮胎,成本..等等.

当我拉一个实体时,一切顺利,我在文本字段中插入信息然后按保存,它很好地出现在我的tableview上!但是,正如您已经知道的那样,我希望其余的实体插入到我的tableview和不同的部分中.

我试过"搞乱""cellForRowAtIndexPath",也在我的"fetchedResultsController"方法中使用"if"和"swich",但没有成功.我在这里缺少什么?!?!?!

谢谢,对不起我的英语.

core-data fetch uitableview nsfetchedresultscontroller nsfetchrequest

2
推荐指数
1
解决办法
842
查看次数

从包含id的字符串表单NSPredicate

我有这个问题,我想不出如何编写这个谓词.

我有一个名为Contact的实体,它有一个字符串属性"pages",让我们说

contact.pages = @"1,5,11,15,17";
Run Code Online (Sandbox Code Playgroud)

我的数据库中有很多联系人,我想只获取包含某个ID的这些联系人.所以我想说我只想获取这些联系人,哪些页面包含id @"1".

我能想到这样的事情,

NSPredicate* predicate = [NSPredicate predicateWithFormat:@"self.pages CONTAINS %@", _pageId];
Run Code Online (Sandbox Code Playgroud)

但我的问题是,这也会得到联系,例如有pages = @"11,15".

那么关于如何实现这一点的任何想法?我会感激任何建议,提前谢谢!

core-data objective-c nspredicate nsfetchrequest ios

2
推荐指数
1
解决办法
1238
查看次数

从核心数据Swift 4检索数组(可转换)

我有一个名为“ Item”的实体,其属性为“ colorArray”,类型为“ Transformable”。

colorArray可以是,例如:

[["Red", "Blue", "Green"], ["Red"], ["Blue", "Green"], ["Green"], ["Blue"], ["Blue", "Green", "Red"]]
Run Code Online (Sandbox Code Playgroud)

然后,我使用以下命令将colorArray保存到核心数据中:

            newEntry.colorArray = colorArray as NSObject
Run Code Online (Sandbox Code Playgroud)

我想从核心数据中检索colorArray(以与保存时相同的数组格式),执行此操作的最佳方法是什么?

arrays core-data nsfetchrequest swift4

2
推荐指数
1
解决办法
2968
查看次数

iOS:executeFetchRequest:错误:获取请求必须具有实体

我开发了一个针对iPhone的应用程序,它使用CoreData.当我在模拟器上运行它时,一切正常,但是当我在设备上运行它时,我收到以下错误:

"*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'executeFetchRequest:error: A fetch request must have an entity.'"

我在我的代码中指定并定义了一个实体,如下所示:

NSFetchRequest *select = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription entityForName:@"NewsStand" inManagedObjectContext:[CDHelper sharedCDHelper].managedObjectContext];
[select setEntity:entity];
NSError *error;
NSMutableArray *results = [[[CDHelper sharedCDHelper].managedObjectContext executeFetchRequest:select error:&error] mutableCopy];
Run Code Online (Sandbox Code Playgroud)

当我执行fetch以在tableView中显示存储数据库的内容时,会发生错误.

我还定义了一个managedObjectModel:

- (NSManagedObjectModel *)managedObjectModel
 {
if (__managedObjectModel != nil)
{
    return __managedObjectModel;
}
NSURL *modelURL = [[NSBundle mainBundle] URLForResource:@"newsStandModel" withExtension:@"momd"];
__managedObjectModel = [[NSManagedObjectModel alloc] initWithContentsOfURL:modelURL];    
return __managedObjectModel;
}
Run Code Online (Sandbox Code Playgroud)

core-data nsfetchrequest ios

1
推荐指数
1
解决办法
9318
查看次数

具有节名称的NSFetchedResultsController

场景:

我有跟踪iOS应用程序的费用,我将费用从费用明细视图控制器存储到表视图(带有提取结果控制器),显示费用列表以及类别和金额和日期.我的实体"Money"中有一个日期属性,它是费用或收入的父实体.

我的问题:

我想要的是基本上分类给定的一周,一个月或一年的费用/收入,并将其显示为部分标题,例如:(10月1日至10月7日,2012年),它显示费用/收入金额和相关根据特定的一周的东西.在该视图中提供了两个按钮,如果我按下右键,它将使周增加一周(2012年10月1日至10月7日现在显示2012年10月8日 - 10月15日),同样左按钮将减少一周一个星期.我在视图中也有两个段控件.我想要做的是按下"每周"的段控制,如果我按下另一段"类别" - 我将如何根据类别过滤掉每周的费用/收入?

我想在表格视图中显示两个部分(一个显示费用的日期,另一个显示格式的收入日期(2012年10月1日 - 2012年10月7日)).我怎么做到这一点?我写了一些伪代码,如果有人能告诉我如何完成上述操作,那就太好了.

编辑 - FETCH控制器

- (void)userDidSelectStartDate:(NSDate *)startDate andEndDate:(NSDate *)endDate
{    
    AppDelegate * applicationDelegate = (AppDelegate *) [[UIApplication sharedApplication] delegate];
    NSManagedObjectContext * context = [applicationDelegate managedObjectContext];

    NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
    // Edit the entity name as appropriate.
    NSEntityDescription *entity = [NSEntityDescription entityForName:@"Money" inManagedObjectContext:context];
    [fetchRequest setEntity:entity];

    [NSFetchedResultsController deleteCacheWithName:nil];

    //Here you create the predicate that filters the results to only show the ones with the selected date
    NSPredicate *predicate = [NSPredicate …
Run Code Online (Sandbox Code Playgroud)

core-data nsfetchedresultscontroller nsfetchrequest ios

1
推荐指数
1
解决办法
5365
查看次数

核心数据:NSPredicate,可查看两个实体

问题是我不知道如何NSPredicate在两个实体中查看.有任何想法吗?

我们假设我有2个实体:

Library:
1 lib_id
2 name
3 address
Run Code Online (Sandbox Code Playgroud)

和:

Books
1 book_id
2 book_name
3 book_author
4 lib_id
Run Code Online (Sandbox Code Playgroud)

它们之间没有任何核心数据关系.我想创建一个获取请求,该请求将返回包含至少一本书的所有库的NSArray.

我认为它是这样的:

NSFetchRequest *request = [[NSFetchRequest alloc] init];
NSEntityDescriptor *entity = [NSEntityDescriptor entityForName:@"Books" inManagedObjectContext:context];
 // some NSPredicate...
array = [context executeFetch ...];
Run Code Online (Sandbox Code Playgroud)

core-data objective-c nsfetchrequest ios

1
推荐指数
1
解决办法
1069
查看次数

核心数据:在获取时重命名属性

我有两个关系如下的实体:

Contact <--> ContactMeta
Run Code Online (Sandbox Code Playgroud)

在这里,Contact有一个关系为'contactMeta',ContactMeta有一个属性为'operation'.

我在Contact实体上触发了一个fetchRequest.结果类型是NSDictionaryResultType.

所以我得到了一个字典数组,我使用NSJSONSerialization进行序列化并将其作为JSON请求发送到服务器.

现在,我将"contactMeta.operation"添加到propertiesToFetch列表中,因此字典中的一个键是"contactMeta.operation".

问题是 -我需要在JSON请求中发送"operation"作为密钥,代替"contactMeta.operation".

我有一个选项 - 迭代列表中的每个字典,添加一个键 - "操作",其值为键"contactMeta.operation"的值,然后删除"contactMeta.operation"的键值.

但我对这种方法不满意,并且认为在sqlite中我们可以有这样的查询:

Select first_name, last_name, contactmeta as operation from contact;
Run Code Online (Sandbox Code Playgroud)

我们可以在核心数据中做类似的事情,还是有任何智能和更好的方法来实现我想要做的事情?

请建议.

cocoa-touch core-data nsfetchrequest

1
推荐指数
1
解决办法
140
查看次数

如何从对象创建日期排序的核心数据中获取结果?

对不起,如果标题不清楚,我会解释:

我有一个音符创建页面,在创建一个音符之后我将使用模型类(nsmanagedobject子类)保存音符.

我有另一个表视图控制器,我正在显示注释,我希望表视图上的注释按创建日期排序,是否有一个键?

这就是我现在拥有的:

NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"body" ascending:YES];
Run Code Online (Sandbox Code Playgroud)

这里的关键是注释的文本,所以它按abc排序,你能帮我按日期排序吗?

TNX

objective-c nsfetchedresultscontroller nsfetchrequest ios

1
推荐指数
1
解决办法
1868
查看次数

如何在单次获取请求中调用两个NSPredicate.核心数据iOS Swift

在我的应用程序中,我使用的是Core Data.现在我想从数据库中获取数据,为此我使用获取请求.但是我想NSPrediate在单个获取请求中使用两个,所以我该怎么做呢.

这是我的代码:

let feedfetch = NSFetchRequest(entityName: "Feed")
feedfetch.predicate = NSPredicate(format: "userid == %@", userid)

let fetchedPerson = try moc.executeFetchRequest(feedfetch)
Run Code Online (Sandbox Code Playgroud)

但是我想使用两个或更多谓词,那么我该怎么做呢?

我想在一个获取请求中调用所有这些,所以我该怎么做

let feedfetch = NSFetchRequest(entityName: "Feed")
feedfetch.predicate = NSPredicate(format: "userid == %@", userid)
feedfetch.predicate = NSPredicate(format: "is_deleted == %@", "0")
let sortDescriptor = NSSortDescriptor(key: "feed_id", ascending: false,selector: #selector(NSString.localizedStandardCompare))
feedfetch.sortDescriptors = [sortDescriptor]

let fetchedPerson = try moc.executeFetchRequest(feedfetch)
Run Code Online (Sandbox Code Playgroud)

core-data nspredicate nsfetchrequest ios swift

1
推荐指数
1
解决办法
1532
查看次数