0

我有一个代表catalogid 的int 变量。该变量在块外声明,如下所示:

int catalogId = [vegetableService getCurrentCatalogNumber];

在块内我做这样的事情:

 int serverCatalogId = (int) [obj valueForKey:@"CatalogId"];

                if(catalogId < serverCatalogId)
                {   
                    catalogId = serverCatalogId;
                }

这当然会导致一个错误,指出变量必须是 __block 类型。所以我这样声明了catalogid:

__block int catalogId = [self getCurrentCatalogNumber];

但现在我得到了奇怪的值,比如 196758 而不是 1、2、3。

4

1 回答 1

1
int serverCatalogId = (int) [obj valueForKey:@"CatalogId"];

这是一个指向 int 的指针。因此疯狂的价值观。基元不能存储在目标 C 集合中。如果您在系统的其他地方有这个,请查看 NSNumber 并使用其类型转换方法 intValue 从 NSDictionary 中提取 NSNumber。

于 2012-10-21T03:01:24.683 回答