我尝试将像"898.171813964844"这样的值转换为00:17:02(hh:mm:ss).
如何在目标c中完成?
感谢帮助!
我有一个NSMutableArray的NSNumbers.基本上我只是想检查NSNumbers数组中是否有任何值=某个值.
我可以遍历数组,逐个检查,这绝不是最佳选择.
我也试过并且使用失败containsObject,因为这只有在id相同的情况下才有效.
我读了一些关于NSPredicate这个问题的解决方案,但我不确定如何使用它NSArray.
任何答案都表示赞赏.
谢谢
在目标c中,我如何检查字符串/ NSNumber是整数还是整数
我有一个界面给我这样的数字0000000012345,78
所以我想出了如何用它们制作一个数字.但我需要用这个数字计算,我实际需要的是一个十进制数.
NSNumberFormatter *fmtn = [[NSNumberFormatter alloc] init];
[fmtn setFormatterBehavior:NSNumberFormatterBehavior10_4];
[fmtn setNumberStyle:NSNumberFormatterDecimalStyle];
[fmtn setDecimalSeparator:@","];
NSNumber *test = [fmtn numberFromString:@"0000000012345,78"];
Run Code Online (Sandbox Code Playgroud)
如何将NSNumber设为NSDecimalNumber?
编辑:这是我最终得到的代码:
NSDictionary *localeDict = [NSDictionary dictionaryWithObject:@"," forKey:@"NSDecimalSeparator"];
NSDecimalNumber *test = [[NSDecimalNumber alloc] initWithString:@"00000000012345,78" locale:localeDict];
Run Code Online (Sandbox Code Playgroud)
如何将语言环境字典放在一起不能被描述为"记录良好",并且我花了一些谷歌搜索来找到一个例子.
这个也有效:
NSLocale *deLoc = [[NSLocale alloc] initWithLocaleIdentifier:@"de"];
NSDecimalNumber *testd = [NSDecimalNumber decimalNumberWithString:@"00000000012345,78" locale:deLoc];
Run Code Online (Sandbox Code Playgroud) 我有一个像这样初始化的字典......
keyDictionary = [[NSDictionary dictionaryWithObjects:values forKeys:keys]retain];
Run Code Online (Sandbox Code Playgroud)
其中keys是NSArray字母和其他字符values的一个NSArray,是unsigned chars的一个,它们是这些字符的USB十六进制密钥代码.
USB密钥代码是十六进制值,范围从0x04到0xE7.我正在尝试根据键盘上按下的键创建这两者之间的地图.
这个values数组是这样创建的......
NSArray *values = [NSArray arrayWithObjects:
[NSNumber numberWithUnsignedChar:0x04]/*A*/,
[NSNumber numberWithUnsignedChar:0x05]/*B*/, /*ETC*/];
Run Code Online (Sandbox Code Playgroud)
理想情况下,当我运行此代码时...在哪里 character == @"I"
- (uint8) getUSBCode:(NSString *)character
{
NSNumber *val = [keyDictionary objectForKey:character];
return (uint8)[val unsignedCharValue];
}
Run Code Online (Sandbox Code Playgroud)
我希望能够回来0x0C,但是我作为一个int得到12回归(在我想到之后,这是有道理的).我需要保留十六进制值.我不需要字符串值.我需要直接转换为十六进制值或更好的存储方式
uint8 只是一个typedef unsigned char.
编辑 我之前发布时并不清楚.这就是我需要的.
我需要这些代码的十六进制值,因为它们是通过内部公司网络发送的.此外,按下的键的值正在从big endian(或者很少,它正在逃避我现在的哪一个)转换到另一个,然后通过内部网络传输.我知道这些值存储在二进制文件中,但我需要以十六进制格式传输它们.
另外,我说我从这个功能回来了12.我从调试器中读到12,实际上没有得到这个值.这可能就是我迷茫的原因.
据我所知,在Objective-C中,您只能将对象放入词典中.因此,如果我要创建一个字典,它必须拥有所有对象.这意味着我需要把我的注意力作为NSNumber,对吧?
SOO ...
NSNumber *testNum = [NSNumber numberWithInt:varMoney];
NSMutableDictionary *dictionary = [[NSMutableDictionary alloc] init];
[dictionary setObject:@"OMG, Object 1!!!!" forKey:@"1"];
[dictionary setObject:@"Number two!" forKey:@"2"];
[dictionary setObject:testNum forKey:@"3"];
NSNumber *retrieved = [dictionary objectForKey:@"3"];
int newVarMoney = [retrieved intValue];
Run Code Online (Sandbox Code Playgroud)
其中varMoney是先前声明的int.我的问题是,有没有更好的方法将"int"存储在字典中而不是将其存入NSNumber?
谢谢!
编辑:04/25/13
我问这个问题已经很久了.对于将来遇到困难的人来说,有更简单的方法可以使用Apple LLVM Compiler 4.0,它在Xcode中默认为一点.(弧)
NSMutableDictionary *dictionary = [NSMutableDictionary dictionary];
[dictionary setObject:@1337 forKey:@"1"];
Run Code Online (Sandbox Code Playgroud)
就是这样,使用@ 1337语法快速创建NSNumber对象.与变量一起使用,所以我的上面可能变成:
[dictionary setObject:@(varMoney) forKey:@"3"];
Run Code Online (Sandbox Code Playgroud)
要么
dictionary[@"mykey"] = @1337;
Run Code Online (Sandbox Code Playgroud)
简单.
我正在开发一些代码,其中我使用扫描程序从字符串中获取NSNumbers,比如x和y.
现在我想从x和y计算一些简单的东西,比如z = 10.0 /(x + y/60.0)/60.0).我不能直接这样做,因为编译器不喜欢应用于数字对象的普通算术符号.
所以,我尝试定义类型为double的xD和yD,然后尝试进行类型转换
xD =(double)x; yD =(double)y;
但这也给出了编译错误.如何将NSNumber对象转换为在普通算术表达式中使用?我做了相当多的文献浏览,但没有找到答案.
在此先感谢您的帮助.
约翰多纳
我无法在任何地方找到这个,所以我只是要求确认.是的,我知道它是基本的,但我想在我犯错百万次之前我宁愿做到这一点:
如果我执行以下操作,默认情况下是否将"0"转换为NSNumber(如果不是,它是什么对象类型),还是我必须执行第二个代码?
(或者这两个对我正在尝试的事情都可能是错误的.如果是这样,请告诉我.他们都编译,所以我只是想知道哪一个是"正确"(或首选)以及为什么.)
代码1:
NSMutableArray array = [[[NSMutableArray alloc] init]];
[array addObject: 0];
Run Code Online (Sandbox Code Playgroud)
代码2:
NSMutableArray array = [[NSMutableArray alloc] init];
[array addObject: [NSNumber numberWithInt: 0]];
Run Code Online (Sandbox Code Playgroud) 在Swift中将CInt转换为Int(本机整数类型)的最简洁方法是什么?现在我正在使用:
NSNumber.numberWithInt(myCInt).integerValue
Run Code Online (Sandbox Code Playgroud)
这是首选方法吗?
在我的应用程序中,我在比较两个NSNumber对象时不小心使用了"==" :
NSNumber *number1;
NSNumber *number2;
Run Code Online (Sandbox Code Playgroud)
后来,在设置了这些对象的int值后,我不小心这样做了:
if (number1 == number2) {
NSLog(@"THEY'RE EQUAL");
}
Run Code Online (Sandbox Code Playgroud)
而且,令人困惑的是,它有效!我可以发誓我被教导这样做:
if (number1.intValue == number2.intValue) {
NSLog(@"THEY'RE EQUAL");
}
Run Code Online (Sandbox Code Playgroud)
如何在两个NSNumber对象之间使用"==" ,为什么?这是否意味着可以通过这种方式对它们进行比较,还是只是一个侥幸,这通常不能保证每次都有效?这真让我困惑:(
nsnumber ×10
objective-c ×8
integer ×2
iphone ×2
arrays ×1
casting ×1
compare ×1
dictionary ×1
int ×1
ios ×1
nspredicate ×1
nsstring ×1
object ×1
swift ×1
variables ×1