【发布时间】:2016-09-12 06:16:18
【问题描述】:
我 typeCast Product(创建对象的模型类的名称)类与数组(NSArray 的对象,其中包含从数据库中获取的数据)。当我想将项目类对象的值设置为 NSMutableDictionary 即 @ 987654323@ 应用程序崩溃。
entityDescription = [NSEntityDescription entityForName:@"Product" inManagedObjectContext:appDelegate.managedObjectContext];
NSFetchRequest *request = [[NSFetchRequest alloc] init];
[request setEntity:entityDescription];
NSSortDescriptor *sd = [[NSSortDescriptor alloc] initWithKey:@"prodId" ascending:NO];
request.sortDescriptors = @[sd];
[request setPredicate: [NSPredicate predicateWithFormat:@"active = %@ AND isDeletedProd = %@",@1,@0]];
_fetchedResultController = [[NSFetchedResultsController alloc] initWithFetchRequest:request managedObjectContext:appDelegate.managedObjectContext sectionNameKeyPath:nil cacheName:nil];
_fetchedResultController.delegate = self;
request.resultType = NSDictionaryResultType;
NSError *error;
[_fetchedResultController performFetch:&error];
arrdata = [self.fetchedResultController fetchedObjects];
这段代码是我用来获取数据的,然后想把它转换成产品。
Product *arrProd = (Product *)arrdata;
然后使用下面给出的方法将 arrProd 传递到 json 中。
[[ServerSyncUtil sharedInstance] syncProduct:arrProd withHandler:^(BOOL success,NSData *data , NSError *error)
{
}];
这都是什么方法..
-(void)syncProduct:(Product *)product withHandler:(syncHandler)handler {
NSMutableArray *products = [NSMutableArray array];
[products addObject:[self addProduct:product]];
[self uploadProducts:products withHandler:handler];
}
然后调用addProduct方法。
-(NSDictionary *) addProduct:(Product *) product {
NSMutableDictionary *data = [NSMutableDictionary dictionary];
NSLog(@"%@",product);
[data setObject:product.prodName forKey:kProductName];
[data setObject:product.desc ? product.desc:@"" forKey:kDescription];
return datal
}
这里当想将setObject放入数组数据应用程序崩溃了。
【问题讨论】:
-
请添加一些代码。
-
data setObject:product.desc ? product.desc:@"" forKey:kDescription];崩溃了? -
是的,它会崩溃。实际上我认为 product.prodName 没有任何价值。但在产品中它有价值。
-
尝试使用虚拟值
@"xyz"而不是product.prodName,看看它是否仍然崩溃。顺便说一句,什么是崩溃,请也添加。 -
如果我输入虚拟值,它的工作正常。使用 product.prodName 时崩溃是 2016-09-12 13:45:57.089 BQ[15363:247379] -[__NSArrayM prodName]: unrecognized selector sent to实例 0x7fcb89d60c40 2016-09-12 13:45:57.111 BQ[15363:247379] *** 由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因:“-[__NSArrayM prodName]:无法识别的选择器发送到实例 0x7fcb89d60c40”