【发布时间】:2014-02-01 10:45:52
【问题描述】:
我正在使用以下代码从 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。 在视图控制器上,我将它们存储到 NSMutableArray *messages on viewdidload 函数中。 现在,如果收到或发送新消息,我想将该新的 NSDictionary 存储到消息中。这样做会产生错误:
由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因:“-[__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 上调用“addObject:”,请在您将对象添加到数组的位置发布相关代码。
-
您不能将对象添加到非可变数组中。
-
如果你在一行中初始化一个指针,然后在下一行将指针设置为不同的值,那么第一行就没什么用了。
标签: ios objective-c ios7