gpt4 book ai didi

cocoa - NSArray 中的核心数据错误

转载 作者:行者123 更新时间:2023-12-03 16:50:49 26 4
gpt4 key购买 nike

我有一个执行 NSFetchRequest 来获取托管对象数组(特别是 XMPPUserCoreDataStorageObjects)的方法。在performUserFetch返回数组之前,对象正确地发生故障,我可以打印所有的displayNames,但是一旦我将数组返回到printUserInfo,对象就会进入故障状态,除了Core Data不会带来问题之外,这不会是问题他们回来了!

- (NSArray*)performUserFetch 
{
NSManagedObjectContext *context = [[NSManagedObjectContext alloc] init];
[context setPersistentStoreCoordinator:[xmppRosterStorage persistentStoreCoordinator]];
[context setUndoManager:nil];
NSEntityDescription *entity = [NSEntityDescription entityForName:@"XMPPUserCoreDataStorageObject" inManagedObjectContext:context];

NSSortDescriptor *sd1 = [[NSSortDescriptor alloc] initWithKey:@"sectionNum" ascending:YES];
NSSortDescriptor *sd2 = [[NSSortDescriptor alloc] initWithKey:@"displayName" ascending:YES];

NSArray *sortDescriptors = [NSArray arrayWithObjects:sd1, sd2, nil];

NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
[fetchRequest setEntity:entity];
[fetchRequest setSortDescriptors:sortDescriptors];
[fetchRequest setReturnsObjectsAsFaults:NO];
NSError *err;

NSArray *result = [context executeFetchRequest:fetchRequest error:&err];
return result;

}

- (void)printUserInfo
{
NSArray *result = [self performUserFetch];
for(XMPPUserCoreDataStorageObject *user in result)
{
NSString *dn = user.displayName;
NSLog(@"Display name = %@", dn);
}
NSLog(@"%@",result);
}

我每 5 秒调用一次 printUserInfo,结果数组在 PerformUserFetch 中表现良好,但在 printUserInfo 中所有内容都已损坏,并且数组中的所有元素都已从内存中清除。那很好,但是当我调用 user.displayName 时,错误没有解决,所以 dn 的值为 null,用户的描述是

"<XMPPUserCoreDataStorageObject: 0x10219fd60> (entity: XMPPUserCoreDataStorageObject; id: 0x1021a3390 <x-coredata://324B9E93-BAD1-42B4-B7DB-2A62CA69BA13/XMPPUserCoreDataStorageObject/p127> ; data: <fault>)"

谁能帮忙吗?!

(信息:10.7 SDK,每5秒调用一次printUserInfo,并且在ARC下运行)

最佳答案

只是猜测。尝试以下方法是有希望的

  1. 不要每次都重新创建托管对象上下文。将其保留为您类(class)的属性(property)。
  2. 也许您还应该分配/初始化数组以确保内存保持分配状态。您还可以使用属性。

另一种解决方案,顺便说一句,是使用 NSFetchedResultsController。它的设计在故障排除方面特别可靠和高效。

关于cocoa - NSArray 中的核心数据错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9197547/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com