gpt4 book ai didi

ios - NSManagedObject 错误/无法获取 NSManagedObject 处理的 'primitive' 对象

转载 作者:行者123 更新时间:2023-11-29 03:23:59 26 4
gpt4 key购买 nike

我正在与 CoreData 作斗争。我想获取以下对象:

@interface Email : NSManagedObject {
}

@property (nonatomic, copy) NSString *email;
@property (nonatomic, copy) NSString *contact;
@end

..并将结果放入 NSMutableArray 中,但放入 NSString 内容(不是 NSManagedObjects!)。这是因为我使用的是 json-framework 并且该引擎不允许传递 NSManagedObjects。

这些行执行从 CoreData 的获取

    NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription entityForName:@"Emails" inManagedObjectContext:self.managedObjectContext];
[fetchRequest setEntity:entity];
[fetchRequest setPropertiesToFetch:[NSArray arrayWithObject:@"email"]];
NSError *error = nil;
NSMutableArray *fetchedObjects = [[NSMutableArray alloc] init];
fetchedObjects= [self.managedObjectContext executeFetchRequest:fetchRequest error:&error];

flight.emails=fetchedObjects;

“航类”对象声明如下:

@interface Flight : NSObject {
NSMutableArray *_emails;
}

@property (nonatomic, retain) NSMutableArray *emails;

使用这段代码,我遇到了 CoreData 错误。我尝试了一些其他的实现变体,但从未真正设法在flight.emails中拥有NSString对象,但总是NSManagedObjects。我尝试的是在 Email NSManagedObject 中实现一个专用的 getter 函数,该函数复制获取的 NSString 并返回副本。

我认为这是一个常见问题,但是,我的研究尚未在此问题上找到解决方案。

谢谢,彼得

最佳答案

根据经验,setPropertiesToFetch: 仅在请求返回的对象为字典时有效。所以你的代码中有几个问题:

  1. 您正在请求特定属性(电子邮件),但尚未将返回类型设置为字典。看看 setResultType:
  2. 您仍然需要获取结果并从中提取电子邮件对象。您不能只将生成的数组分配给您的电子邮件属性。

试试这个:

[fetchedRequest setResultType:NSDictionaryResultType];
NSArray* results = [self.managedObjectContext executeFetchRequest:fetchRequest error:&error];

if(error != nil || results == nil) return;

flight.emails = [results valueForKeyPath:@"email"];

关于ios - NSManagedObject 错误/无法获取 NSManagedObject 处理的 'primitive' 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20721750/

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