0

我是 xcode 和核心数据的新手。我想使用核心数据执行以下查询。

从 roomtype=@"ac single" 和 roomstatus=@"YES" 的房间表中选择 count(roomtype);

请指导我如何使用 NSPredicate 来执行我的查询。

4

1 回答 1

1

处理核心数据的步骤是:

创建获取请求以将对象拉入托管对象上下文

// Assuming you have an entity called Rooms:
[NSFetchRequest fetchRequestWithEntityName:@"Rooms"];

现在创建要应用于该实体的谓词以过滤返回的内容

// Assuming that the Rooms entity has attributes for "roomType" and "roomStatus"
// I'd actually use %K and attributes - but this will do until you learn about them.
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"roomType == %@ and roomStatus == %@", @"ac single", @"YES"];

[request setPredicate:predicate];

运行获取请求

// Assuming you have the managed Object Context in a property
NSError *error;
NSArray *results = [self.moc executeFetchRequest:request error:&error];

// Make sure the results are not nil, if they are handle the error
if (!results) {
    // Handle error in here using the error parameter you passed in by reference.
}

结果现在在一个数组中,您可以简单地获得满足谓词的实体数量:

NSUInteger resultCount = [results count];

在使用 Core Data 时,这都是标准的东西。如果您按照自己的方式进行操作并尝试理解这些步骤 - 您将有很长的路要走来编写自己的 fetch 请求。

于 2013-05-08T07:05:24.370 回答