gpt4 book ai didi

ios - NSInteger 到 NSString 被误解

转载 作者:行者123 更新时间:2023-11-28 19:00:42 25 4
gpt4 key购买 nike

我有一个关于 NSIntegerNSString 的问题我一直在努力,但没有运气。但是出于某种奇怪的原因,我的 NSInteger 之一会,但我不知道为什么我有这个方法:

//Lets say loc_id = 869
-(void)addResource:(NSInteger)loc_id
{
//[loc.chosenLocations addObject:[NSString stringWithFormat@"%@",loc_id]];
NSLog([NSString stringWithFormat:@"addResource: loc_id:%@",loc_id]);
}

结果不好

Because its giving me: addResource: loc_id:20987787696 in the debugger of xcode

应该是 loc_id:860

当我尝试使用 loc_id = 8 时它工作得很好为什么会有这种奇怪的行为或者我误解了什么感谢您的提示和帮助。当我以字符串格式使用 %@ 时,它适用于 loc_id = 8 但是当我尝试使用%d 这是正常使用,它也会导致 loc_id:20987787696怎么会?

方法的使用:

-(IBAction)switchChanged:(id)sender {
UISwitch *switchControl = sender;
[loc addResource:switchControl.tag]
}

-(void)addSwitch:(NSInteger)aid
{
UISwitch *sw = [[UISwitch alloc]initWithFrame:CGRectMake(x,y,w,h)]];
sw.tag = aid;
[sw addTarget:self action:@selector(switchChanged:) forControlEvents:UIControlEvenValueChanged]];
[self.View addSubview:sw];
}

//Data is dynamic (NSObject) but for example i will exclude the dynamic data.
for(int i = 0; i < 20; i++)
{
NSInteger *loc_id = 868;
[self addSwitch:loc_id];

}

在某个时候我想将它插入到上面注释的 NSMutableArray 中,但我希望它的值为 869,它给了我 2071894069 我想要 int 的值而不是内存的东西

亲切的问候,斯特凡

最佳答案

您应该使用 %li@ld 而不是 %@,并删除 stringWithFormat: 调用在 NSLog 中(它已经需要一种格式):

NSLog(@"addResource: loc_id:%li",loc_id);

%@ 是格式化对象描述和字符串的选择器。 %li 是将您的整数转换为 long,并防止最终的编译器警告。


编辑:

在评论中提出了很多问题之后,您的代码中还有另一个错误:

NSInteger *loc_id = 868;

您不应将 loc_id 作为指针启动。改用:

NSInteger loc_id = 868;

编辑#2:

正如聊天中所讨论的,问题出在从保存它的数组/字典中提取 NSInteger 值的方式。

关于ios - NSInteger 到 NSString 被误解,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26179400/

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