i具有代表编目的int变量。该变量在块外声明如下:
int catalogId = [vegetableService getCurrentCatalogNumber];
在块中我做这样的事情:
int serverCatalogId = (int) [obj valueForKey:@"CatalogId"];
if(catalogId < serverCatalogId)
{
catalogId = serverCatalogId;
}
当然,这会导致错误,说__ block类型必须的变量。所以我宣布了这样的编目:
__block int catalogId = [self getCurrentCatalogNumber];
但是现在我得到了像196758这样的怪异价值,而不是1,2,3。
int serverCatalogId = (int) [obj valueForKey:@"CatalogId"];
这是将指针铸成int。因此疯狂的价值观。原语不能存储在目标C集合中。如果您在系统中的其他地方都有此内容,请查看NSNUMBER,并使用其类型的转换方法IntValue将Nsnumber从Nsdictionary中拉出。