Ios CoreData限制相关实体的批量大小

Ios CoreData限制相关实体的批量大小,ios,swift,sqlite,core-data,Ios,Swift,Sqlite,Core Data,我遇到了一个非常简单的CoreData问题,但似乎很难解决。编写一个简单的聊天应用程序,每个用户都有许多消息 class CoreUser: NSManagedObject { @NSManaged var firstname: String? @NSManaged var id: String? @NSManaged var lastname: String? @NSManaged var nickname: String? @NSManaged var

我遇到了一个非常简单的CoreData问题,但似乎很难解决。编写一个简单的聊天应用程序,每个用户都有许多消息

class CoreUser: NSManagedObject
{
    @NSManaged var firstname: String?
    @NSManaged var id: String?
    @NSManaged var lastname: String?
    @NSManaged var nickname: String?
    @NSManaged var messages: NSSet
}

class CoreMessage: NSManagedObject
{
    @NSManaged var body: String?
    @NSManaged var owner: CoreUser
    @NSManaged var state: String
    @NSManaged var timestamp: NSDate
}
这种关系是:一对多

正在获取用户实体:

func getCoreUser(userId: String) -> CoreUser?
{
    var error: NSError?;
    let fetchRequest = NSFetchRequest(entityName: "CoreUser");
    let nodeId = NSString(string: userId.lowercaseString);
    let pred = NSPredicate(format: "id == %@", nodeId);
    fetchRequest.fetchLimit = 1;
    fetchRequest.predicate = pred;
    let fetchResults = self.managedObjectContext!.executeFetchRequest(fetchRequest, error: &error) as? [CoreUser];

    if let results = fetchResults
    {
        return results.first;
    }
    return nil;
}
如何限制相关消息实体(20条消息,按日期排序)。结果数组包含来自此用户的所有消息


谢谢帮助。

获取请求总是从托管对象上下文返回对象。您无法获取“已修改”的对象,例如与
CoreMessage
具有“受限”关系的
CoreUser
对象

但是您可以做的是获取相关的
CoreMessage
对象 对于给定用户:

let fetchRequest = NSFetchRequest(entityName: "CoreMessage")
fetchRequest.predicate = NSPredicate(format: "owner.id == %@", nodeId)
现在,您可以添加一个获取限制来限制检索到的数据的数量 信息:

fetchRequest.fetchLimit = 20
以及合适的排序描述符