我有一个表示catalogid的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这样奇怪的值。
答案 0 :(得分:1)
int serverCatalogId = (int) [obj valueForKey:@"CatalogId"];
这是一个指向int的指针。因此疯狂的价值观基元不能存储在目标C集合中。如果在系统的其他地方有这个,请查看NSNumber并使用其类型转换方法intValue从NSDictionary中提取NSNumber。