gpt4 book ai didi

ios - 如何将 NSDictionary 类型的对象添加到包含 NSDictionaryResultType 对象的 NSMutableArray?

转载 作者:行者123 更新时间:2023-11-29 10:48:24 26 4
gpt4 key购买 nike

我正在使用以下代码从 Core Data 获取数据-

NSManagedObjectContext *context=[[self appDelegate] managedObjectContext];

NSEntityDescription *entityDesc=[NSEntityDescription entityForName:@"Messages" inManagedObjectContext:context];
NSFetchRequest *request=[[NSFetchRequest alloc] init];
[request setEntity:entityDesc];
[request setResultType:NSDictionaryResultType];
NSArray *objects=[context executeFetchRequest:request error:&error];

包含上述代码的函数返回 NSDictionaryType 的 NSArray。在 View Controller 上,我将它们存储到 NSMutableArray * messages on viewdidload 函数中。现在,如果收到或发送了新消息,我想将新的 NSDictionary 存储到消息中。这样做会产生错误:

Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[__NSArrayI addObject:]: unrecognized selector sent to instance 0x9740230'

获取数据的代码-

CoreDataHandler *handler=[[CoreDataHandler alloc] init];

NSMutableArray *messages=[[NSMutableArray alloc]initWithObjects: nil];
messages=(NSMutableArray *)[handler fetchMessages:[chatWithUser objectForKey:@"jidStr"]];

我向消息添加对象的代码-

NSMutableDictionary *m = [[NSMutableDictionary alloc] init];
[m setObject:messageStr forKey:@"msg"];
[m setObject:@"you" forKey:@"sender"];
[m setObject:[NSString getCurrentTime] forKey:@"createdAt"];
[messages addObject:(NSDictionary *) m];

最佳答案

您应该在 NSArray 上使用 NSMutableArray,NSArray 不包含方法 addObject。您可以像这样创建可变副本:

NSMutableArray *objects=[[context executeFetchRequest:request error:&error] mutableCopy;

现在您可以自由地对该对象调用 addObject 方法。

关于ios - 如何将 NSDictionary 类型的对象添加到包含 NSDictionaryResultType 对象的 NSMutableArray?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21497053/

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