gpt4 book ai didi

ios - objective-c - int 的奇怪行为

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:00:25 25 4
gpt4 key购买 nike

我有一个将属性存储为 int 的对象。

当我在控制台中键入 po menuItem.quantity 时,我得到了一个 1,这正是我所期望的。

如果我尝试使用它来用这行代码填充标签:

label_Quantity.text=[NSString stringWithFormat:@"%d", menuItem.quantity];

我得到的是 414280896

另外,请看下图:

enter image description here

出于某种原因,它显示 _quantity = (int) 414280896但是当我点击 i 图标时,我得到一个 1

这是怎么回事?

编辑 1:

根据评论者的要求,这是 MenuItemDTO:

@interface MenuItemDTO : NSObject

@property (nonatomic) int menuItemID;
@property (nonatomic, strong) NSString* name;
@property (nonatomic, strong) NSString* description;
@property (nonatomic) int quantity;
@property (nonatomic, strong) NSString* imageURL;
@property (nonatomic) int categoryID;
@property (nonatomic) float price;
@property (nonatomic) BOOL isSponsoredItem;
@property (nonatomic, strong) NSDate* lastModifiedDate;

@end

它是这样创建的:

MenuItemDTO * menuItem = [MenuItemDTO new];
menuItem.quantity = [Converter fromDictionaryValueToInt:[json objectForKey:@"Quantity"]];

json 是一个 NSDictionary,具有来自 Web 服务的不同值。

Converter fromDictionaryValueToInt 看起来像这样:

+ (int)fromDictionaryValueToInt:(NSNumber *)value
{
if ([value isKindOfClass:[NSNull class]])
return 0;

return [value intValue];
}

编辑 2:

我发现了问题,但不明白为什么它不起作用。初始化时没有出现问题。那工作得很好。看起来在代码的后面,数量被分配了另一个值,如下所示:

menuItem.quantity = (int)[dict objectForKey:@"Total"];

这就是奇怪数字的问题。现在我正在这样做:

menuItem.quantity = [Converter fromDictionaryValueToInt:[dict objectForKey:@"Total"]];

而且它工作正常。如果有人能向我解释为什么第一种方法不起作用,我会选择那个答案。否则,我稍后会自己放置并选择我的。

感谢评论者对我的帮助。

最佳答案

NSDictionnary只能存储NSObject,这意味着当你调用[dict objectForKey:@"Total"]它返回一个NSNumber *而不是 int,这就是您的 fromDictionaryValueToInt 起作用的原因。

如果你写 menuItem.quantity = (int)[dict objectForKey:@"Total"]; (int) cast 对编译器说:我想将此 NSNumber 指针地址转换为 int,因此 menuItem.quantity 将接收地址而不是值。

关于ios - objective-c - int 的奇怪行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24911731/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com