我正在尝试实现下面的代码段.但是我无法得到预期的结果.例如,如果我的disanceFromLoc = 0.16,我的输出仍然是0.16 km.
我比较价值的方式有问题吗?object是'NSNumber'类(在核心数据中将其定义为double)
if ([object.distanceFromLoc doubleValue] < 0)
{
cell.detailTextLabel.text = [[NSString alloc] initWithFormat:@"Approx. Distance: %0.2f m", [object.distanceFromLoc doubleValue]*1000];
}
else
{
cell.detailTextLabel.text = [[NSString alloc] initWithFormat:@"Approx. Distance: %0.2f km", [object.distanceFromLoc doubleValue]];
}
Run Code Online (Sandbox Code Playgroud)
谢谢!
真鹤
有人可以通过循环显示如何检索值NSMutableArray吗?我的代码基本上为数组添加整数,如下所示:
NSMutableArray *ptr = [[NSMutableArray alloc] init];
[ptr addObject:[NSNumber numberWithInt:1]];
[ptr addObject:[NSNumber numberWithInt:2]];
[ptr addObject:[NSNumber numberWithInt:3]];
// How to retrieve them as integers?
Run Code Online (Sandbox Code Playgroud)
我正在尝试从数组中检索每个数字并将它们总计为总值.
我在我的应用程序中发现了一个错误:逻辑是我NSNumbers使用"==" 比较两个,我相信它曾经起作用.但它不再传递iOS sdk 5,所以我需要使用isEqualToNumber.
iOS sdk 4.2的任何人都可以尝试运行以下代码并给我结果.我试图恢复到较旧的Xcode来自己测试,但我无法做到这一点.
NSNumber *num1 = [NSNumber numberWithInt:100];
NSNumber *num2 = [NSNumber numberWithInt:100];
if (num1 == num2)
{
NSLog(@"== YES");
}
else
{
NSLog(@"== NO");
}
Run Code Online (Sandbox Code Playgroud) 所以我试图改变我所制作的NSMutableArray中的所有布尔值.
我有:
@property (nonatomic, retain) NSMutableArray *isDinosaurTapped;
Run Code Online (Sandbox Code Playgroud)
并合成:
@synthesize isDinosaurTapped;
Run Code Online (Sandbox Code Playgroud)
并设置[EDITED to show isDinosaurTapped]:
NSMutableArray *newDinosaurTaps = [[NSMutableArray alloc] init];
for( int i = 0; i < [dinoSprites count]; i++ )
{
NSNumber *isTapped = [posPlist valueForKeyPath:[NSString stringWithFormat:@"Dinosaurs.Dinosaur_%i.isTapped", i]];
[newDinosaurTaps addObject:isTapped];
}
self.isDinosaurTapped = [newDinosaurTaps copy];
for( int i = 0; i < [isDinosaurTapped count]; i++ )
{
[isDinosaurTapped replaceObjectAtIndex:i withObject:[NSNumber numberWithBool:NO]];
}
Run Code Online (Sandbox Code Playgroud)
当我构建它的时候很好,但是当我实际构建并运行时,我不断得到一个SIGABRT:' - [__ NSArrayI replaceObjectAtIndex:withObject:]:发送到实例的无法识别的选择器.
我是否错误地设置了NSMutableArray的属性?但根据这个,我的属性应该没问题.
非常感谢任何反馈!:d
假如我有一个NSNumber,介于0和1之间,并且可以使用X/Y表示,在这种情况下如何计算X和Y?我不想比较:
if (number.doubleValue == 0.125)
{
X = 1;
Y = 8;
}
Run Code Online (Sandbox Code Playgroud)
所以我得到1/8的0.125
这里是obj-C和Cocoa的新手
我试图在一个方法中增加一个变量,并且习惯于C++,我想只使用变量++的术语,但这不适用于NSNumber,所以我想出了
player1Points = [NSNumber numberWithInt:([player1Points intValue] + 1)];
我很想重新将player1Points重新声明为标题中的int,但我想保留@synthesize和@property,以便我不必编写get和set例程.
有没有更简单的方法来编写这行代码?
我正在尝试从用户默认值中检索一个数字并将其相乘.这是我的代码:
NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];
NSDecimalNumber *current = [prefs objectForKey:@"account"];
NSDecimalNumber *multiplier = [NSDecimalNumber decimalNumberWithString:@"1.15"];
NSDecimalNumber *floo = [current decimalNumberByMultiplyingBy: multiplier];
Run Code Online (Sandbox Code Playgroud)
一旦碰到这floo条线,它就会给我一个非常可怕的崩溃.巨大的错误gobbledygook开始于:
*** Terminating app due to uncaught exception 'NSInvalidArgumentException',
reason: '-[__NSCFNumber decimalNumberByMultiplyingBy:]: unrecognized selector
sent to instance 0x8c7b1e0'
Run Code Online (Sandbox Code Playgroud)
这看起来很简单,但我的天啊!发生了什么?
所以我是Obj-C的新手(具有C和C++经验),我一直在努力.
很简单,我想保存并加载用户进度时的分数和级别.
我有3个功能getFilePath,loadData和savaData.
我getFilePath和loadData似乎工作正常,但我不能获得saveData工作.
这是我的代码:
-(void)saveData
{
NSNumber *updatedScore = [NSNumber numberWithInt:score];
NSNumber *updatedLevel = [NSNumber numberWithInt:level];
NSLog(@"The level im saving is %@",updatedLevel);
NSLog(@"The score im saving is %@",updatedScore);
NSMutableArray *value = [[NSMutableArray alloc]initWithObjects:updatedLevel,updatedScore, nil];
[value writeToFile:[self getFilePath] atomically:YES];
}
-(NSString *)getFilePath
{
NSArray *pathArray = NSSearchPathForDirectoriesInDomains(NSDocumentationDirectory, NSUserDomainMask, YES);
NSLog(@"the path is %@",pathArray);
return [[pathArray objectAtIndex:0]stringByAppendingPathComponent:@"saved.plist"];
}
Run Code Online (Sandbox Code Playgroud)
我的NSLog消息返回正确的值,用户进展级别,但我无法保存它们.
我在NSNumber整个应用程序(非ARC)中使用不同的语法.为了更加了解情况,我试着看看如何NSNumber保留s,具体取决于它们的初始化语法.所以我做了以下事情:
NSNumber* a = @1;
NSNumber* b = [[NSNumber alloc] initWithInt:2];
NSNumber* c = [NSNumber numberWithInt:3];
NSLog(@"%d | %d | %d", a.retainCount, b.retainCount, c.retainCount);
Run Code Online (Sandbox Code Playgroud)
这个代码片段是用按钮点击执行的,输出让我感到困惑(重复点击):
73 | 27 | 6
78 | 159 | 22
78 | 160 | 22
78 | 161 | 22
78 | 162 | 22
78 | 163 | 22
85 | 169 | 22
85 | 170 | 22
85 | 171 | 22
85 | 172 | 22
Run Code Online (Sandbox Code Playgroud)
现在这并没有真正的目的(至少在我的情况下不是这样),但我想知道这些 …
嗨,我收到此错误!我在indexpath.row中使用NSNumber但它给出了警告,我的代码有什么问题请帮助.
NSNumber *num=[NSNumber numberWithInt:indexPath.row];
[HUD showWhileExecuting:@selector(callingMethod:) onTarget:self withObject:num animated:YES];
Run Code Online (Sandbox Code Playgroud) nsnumber ×10
objective-c ×10
ios ×6
cocoa ×2
algorithm ×1
boolean ×1
comparison ×1
increment ×1
loops ×1
math ×1
plist ×1
retaincount ×1