jjzjj

NSNumber

全部标签

iphone - 为什么 NSNumber 类不能正确地将我的 NSString 对象转换为 long long?

我正在尝试将NSString对象转换为具有相同数值的NSNumber。当我使用此语句创建NSString对象时...NSString*songID=[localNotif.userInfoobjectForKey:@"SongID"];varsongID包含字符串值@"10359537395704663785"。当我尝试使用语句将其转换为NSNumber对象时...NSNumber*songIDNumber=[NSNumbernumberWithLongLong:[songIDlongLongValue]];varsongIDNumber包含错误的值922337203685477580

ios - 将长 NSString 转换为 NSNumber

我无法可靠地将较长的NSString转换为NSNumber。具体来说,我正在将MPMediaEntityPropertyPersistentID作为字符串转换为NSNumber有时它可以工作,但通常不会。转化码:NSString*keke=[jsonArrayobjectForKey:@"next"];NSNumberFormatter*f=[[NSNumberFormatteralloc]init];[fsetNumberStyle:NSNumberFormatterDecimalStyle];NSNumber*persistentIDasNumber=[fnumberFromStr

ios - NSNumber 原始值相等与 isEqualToNumber 与 Obj-C 文字

既然我们在Objective-C中有了带有编译器支持的NSNumber字面量,是否有更好的方法将NSNumber与已知整数值进行比较?老办法是[myNumberintegerValue]==5现在我们可以执行[myNumberisEqualToNumber:@5]甚至[myNumberisEqualToNumber:@(someVariable)]。isEqualToNumber:方法是否有优势,或者我们应该坚持使用integerValue除非要比较的值已经是NSNumber?我看到的一个优势是,如果someVariable从NSInteger更改为CGFloat,则新方法不需要更改代

ios - 从 NSNumber 获取 CGFloat 的最常见和正确的做法是什么?

我的工作代码是这样的:NSNumber*n=@42.42;CGFloatcgf=0;CFNumberRefcfn=CFBridgingRetain(n);CFNumberGetValue(cfn,kCFNumberCGFloatType,&cgf);CFRelease(cfn);还有可能CGFloatcgf=(CGFLOAT_IS_DOUBLE)?[ndoubleValue]:[nfloatValue];但这对我来说闻起来更难闻。在我看来,应该有更好的API来完成这种常见的事情。有没有? 最佳答案 无论如何这都会得到正确的结果:NS

ios - 向上舍入 NSNumber

NSNumberFormatter*formatNumber=[[NSNumberFormatteralloc]init];[formatNumbersetRoundingMode:NSNumberFormatterRoundUp];[formatNumbersetMaximumFractionDigits:0];NSNumber*height=[formatNumbernumberFromString:self.heightField.text];NSNumber*width=[formatNumbernumberFromString:self.widthField.text];NS

iphone - 如何在 if 中比较 NSNumber

如何:if(myNSNumber==1){...}这似乎没有建立对象: 最佳答案 如果myNSNUber是NSNumber,你的代码应该是这样的,if([myNSNumberintValue]==1){...}如果是NSInteger,可以直接和整型字面量比较。因为NSInteger是原始数据类型。if(myNSNumber==1){...}注意:确保您的声明中没有*。你的NSInteger声明应该是这样的,NSIntegermyNSNUmber;//RIGHTNSInteger*myNSNUmber;//WRONG,NSInteg

objective-c - 从 NSArray 中的 NSNumber 获取整数值

我有一个NSArray,其中包含具有int值的NSNumber对象:arrayOfValues=[[[NSArrayalloc]initWithObjects:[NSNumbernumberWithInt:1],[NSNumbernumberWithInt:3],[NSNumbernumberWithInt:5],[NSNumbernumberWithInt:6],[NSNumbernumberWithInt:7],nil]autorelease];[arrayOfValuesretain];我正在尝试像这样遍历数组:intcurrentValue;for(inti=0;i我在这里做错

objective-c - 为什么 NSNumber 文字不能用于静态声明

我声明:staticNSString*a=@"a";这是iOS6中的正确声明(使用编译器版本应该更正确,但我暂时不知道)。我认为数字文字也一样:staticNSNumber*b=@1;可以是一个有效的声明。编译器告诉我initializer元素不是编译时常量。这让我有点吃惊。由于NSNumber与NSString一样是不可变的,并且由于我在字符串情况下使用文字,所以我认为它也可能有效。有人对这种差异有合理的解释吗? 最佳答案 第一行是编译时常量,因为您分配的是@"a"而不是staticNSString*a=[NSStringstri

iphone - 核心数据 bool 属性 NSNumber 不记得它是 bool 值

我有一个模型,其属性如下所示:当我设置它的值时,例如:model.isResolved=@YES;保存在模型中的NSNumber“忘记”了它是一个bool值:NSLog(@"%@",strcmp([self.isResolvedobjCType],@encode(BOOL))==0?@"equal":@"different");打印“不同”。这是怎么回事? 最佳答案 Whatisupwiththat?来自documentation:Notethatnumberobjectsdonotnecessarilypreservethetyp

Swift:NSNumber 不是 Float 的子类型

我在playground中尝试了SwiftProgrammingLanguage中的代码并收到以下错误“NSNumber不是Float的子类型”,我只是通过在structPoint中创建Float类型的x和y来稍微修改它。我错过了什么?如果我将Float类型添加到centerX和centerY,我会收到错误消息:找不到接受所提供参数的'/'的重载。 最佳答案 错误消息与实际错误完全无关...实际错误是无法将Double转换为Float。在Size中,x和y是Double(浮点字面量的默认类型)但是在Point、width和heigh