Ios CoreData限制相关实体的批量大小
我遇到了一个非常简单的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
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
以及合适的排序描述符