我想将NSUInteger保留到我的核心数据中,我不知道应该使用哪种类型(整数16,32,64)来满足所需的空间.
根据我的理解:
Integer 16 can have minimum value of -32,768 to 32,767
Integer 32 can have minimum value of -2,147,483,648 to 2,147,483,647
Integer 64 can have minimum value of -very large to very large
Run Code Online (Sandbox Code Playgroud)
和NSUInteger是unsigned long的类型def,等于unsigned int(iPhone上的objective-c中的类型)
所以,如果我使用numberWithUnsignedInteger将我的NSUInteger转换为NSNumber:并将其保存为NSNumber(整数32),我可以安全地检索我的数据吗?
是什么之间的主要区别int,NSInteger而NSUInteger在Objective-C?
哪一个更适合在应用程序中使用?为什么?
如何在objectiveC中将值转换NSUInteger为int值?
以及如何打印NSUInteger价值NSLog,我试过%@,%d,%lu这些不起作用,并抛出Ex-Bad Access错误.
谢谢
你怎么把一个NSUInteger变成一个NSString?我已经尝试了,但我一直NSString都是0.
NSUInteger NamesCategoriesNSArrayCount = [self.NamesCategoriesNSArray count];
NSLog(@"--- %d", NamesCategoriesNSArrayCount);
[NamesCategoriesNSArrayCountString setText:[NSString stringWithFormat:@"%d", NamesCategoriesNSArrayCount]];
NSLog(@"=== %d", NamesCategoriesNSArrayCountString);
Run Code Online (Sandbox Code Playgroud) 我正在尝试将NSInteger转换为NSUInteger,我用Google搜索并发现没有真正的答案.我该怎么做?
我在NSString中有一个数字@"15".我想把它转换成NSUInteger,但我不知道怎么做...
我想知道可可的不同风格的枚举声明背后的理由是什么?
像这样:
enum { constants.. }; typedef NSUInteger sometype;
Run Code Online (Sandbox Code Playgroud)
是否有理由使用typedef来获取NSUInteger的分配而不进行强制转换?
有时typedef是NSInteger/NSUInteger,为什么不总是使用NSInteger?使用NSUInteger真的有好处吗?
枚举标记名有时仍然使用,就像这里的_NSByteOrder.
这个答案也非常有用:Objective-C中的typedef枚举是什么?.
每个值都typedef enum被视为一个int?
例如,给出以下内容typedef enum:
// UIView.h
typedef enum {
UIViewAnimationCurveEaseInOut,
UIViewAnimationCurveEaseIn,
UIViewAnimationCurveEaseOut,
UIViewAnimationCurveLinear
} UIViewAnimationCurve;
Run Code Online (Sandbox Code Playgroud)
我如何知道使用哪种方法创建NSNumber?
+ (NSNumber *)numberWithShort:(short)value;
+ (NSNumber *)numberWithUnsignedShort:(unsigned short)value;
+ (NSNumber *)numberWithInt:(int)value;
+ (NSNumber *)numberWithUnsignedInt:(unsigned int)value;
+ (NSNumber *)numberWithLong:(long)value;
+ (NSNumber *)numberWithUnsignedLong:(unsigned long)value;
+ (NSNumber *)numberWithLongLong:(long long)value;
+ (NSNumber *)numberWithUnsignedLongLong:(unsigned long long)value;
+ (NSNumber *)numberWithInteger:(NSInteger)value NS_AVAILABLE(10_5, 2_0);
+ (NSNumber *)numberWithUnsignedInteger:(NSUInteger)value NS_AVAILABLE(10_5, 2_0);
Run Code Online (Sandbox Code Playgroud)
我认为这+[NSNumber numberWithInt:]是正确的使用方法,因为使用Core Data实现Enums的最佳方法的可接受答案.例如:
[NSNumber numberWithInt:UIViewAnimationCurveLinear]
Run Code Online (Sandbox Code Playgroud)
但是,如果+[NSNumber numberWithInt:]是正确的,为什么呢?
对于按位 …
UITableView数据源方法numberOfSectionsInTableView:的返回类型为NSInteger.但是,UITableView不能有负数行; 它有0行或更多行,那么为什么NSInteger的返回类型呢?是否允许与返回的负整数相关的崩溃?
我在XCode中为我的iOS项目打开了“签名比较”(又名-Wsign-compare)警告(令人惊讶的是,默认情况下它处于关闭状态)。之后,出现了许多这样的警告:
/Users/michalciuba/projects/GlobeMobile/Classes/ACMailController.m:86:19: Comparison of integers of different signs: 'NSInteger' (aka 'long') and 'NSUInteger' (aka 'unsigned long')
Run Code Online (Sandbox Code Playgroud)
它们通常通过比较造成row的财产NSIndexPath是NSInteger由“计数”的方法的返回值NSArray,如下所示:
if(indexPath.row < [self.myDataArray count])
Run Code Online (Sandbox Code Playgroud)
可以通过强制转换来简单地解决警告:
if(indexPath.row < (NSInteger)[self.myDataArray count])
Run Code Online (Sandbox Code Playgroud)
但是,如果要比较每个地方的值,则必须这样做。他们正在数十个地方进行比较。我想知道是否有更好,更聪明的方法来解决这个问题?我不想关闭此警告,因为它可能有助于防止出现无符号整数下溢之类的问题。
nsuinteger ×10
objective-c ×6
nsinteger ×5
ios ×3
int ×2
nsstring ×2
clang ×1
cocoa ×1
cocoa-touch ×1
core-data ×1
crash ×1
enums ×1
iphone ×1
nsnumber ×1
typedef ×1
uitableview ×1