我正在尝试设置Core Data属性,但是我遇到了不兼容的类型错误.我在iPhone 3.0上的Core Data实体中有一个float属性.Core Data自动为托管数据对象生成一个接口,该对象提供对它的属性访问:
@property (nonatomic, retain) NSNumber * volume;
Run Code Online (Sandbox Code Playgroud)
并为其实施:
@dynamic volume;
Run Code Online (Sandbox Code Playgroud)
我创建了一个托管数据对象的实例,我称之为attrVolume,并使用它来通过Core Data托管对象上下文访问该Core数据实体属性:
[attrVolume setVolume:[txtVolume.text floatValue]];
Run Code Online (Sandbox Code Playgroud)
编译错误是:
'setVolume:'参数1的不兼容类型
任何想法如何转换该值而不是编译错误?有没有办法施放给NSNUmber?
任何帮助赞赏// :)
我正在将字符串日期/时间转换为数字时间值.在我的情况下,我只是用它来确定某些东西是否比其他东西更新/更旧,所以这个小小数问题不是一个真正的问题.它不需要秒精确.但它仍然让我挠头,我想知道为什么..
我的日期是@"2010-09-08T17:33:53 + 0000"的字符串格式.所以我写了这个小方法来返回一个时间值.在没有人关心的情况下,如果有人在数月内跳了几天,有28天或31天.在我的数学中,可以假设所有月份都有31天,而且年份有31*12天,因为我不需要两个时间点之间的差异,只知道一个时间点是否晚于另一个时间点.
-(float) uniqueTimeFromCreatedTime: (NSString *)created_time {
float time;
if ([created_time length]>19) {
time = ([[created_time substringWithRange:NSMakeRange(2, 2)]floatValue]-10) * 535680; // max for 12 months is 535680.. uh oh y2100 bug!
time=time + [[created_time substringWithRange:NSMakeRange(5, 2)]floatValue] * 44640; // to make it easy and since it doesn't matter we assume 31 days
time=time + [[created_time substringWithRange:NSMakeRange(8, 2)]floatValue] * 1440;
time=time + [[created_time substringWithRange:NSMakeRange(11, 2)]floatValue] * 60;
time=time + [[created_time substringWithRange:NSMakeRange(14, 2)]floatValue];
time = time + [[created_time substringWithRange:NSMakeRange(17, 2)]floatValue] …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用NSMutableArray的NSMutableArray存储数组int [9] [9],其中我存储了数组中的81个整数:
- (void)awakeFromNib {
// initialization matrix
for (int i = 0; i < 9; i++) {
for (int j = 0; j < 9; j++) {
matrix[i][j] = 0;
}
}
// Creating NSMutableArray instance
TGrid = [NSMutableArray arrayWithCapacity:10];
[self saveGrid];
}
- (void)saveGrid {
NSNumber *aInt;
NSMutableArray *Grid = [NSMutableArray arrayWithCapacity:81];
for (int i = 0; i < 9; i++) {
for (int j = 0; j < 9; j++) {
aInt = [NSNumber numberWithInt:matrix[i][j]];
[Grid …Run Code Online (Sandbox Code Playgroud) 这是我的代码
我循环遍历数组并添加到NSNumber.
NSNumber *totalValue = 0;
NSMutableArray *items = [10, 35, 25]; // Just for demo
for (int i=0; i < items.count; i++)
{
totalValue = totalValue + [items objectAtIndex:i] // How do I add the totalValue?
}
Run Code Online (Sandbox Code Playgroud)
有人可以帮我这个代码吗?
使用NSNumbers而不是整数或浮点数有什么好处?它们为什么存在,为什么使用它们?从UI对象(intValue和floatValue)中获取整数和浮点数要容易得多,而您必须使用NSNumberFormatter对NSNumber执行相同操作.你用什么NSNumbers?
我试图将NSNumber设置为使用NSUserDefaults加载的浮点值但我收到错误.我不明白为什么......?
这是我的代码:
[settingsData.sensitivitySettingValue floatValue] = [[NSUserDefaults standardUserDefaults] floatForKey:@"sensitivityKey"];
Run Code Online (Sandbox Code Playgroud)
如果我自己使用浮动(即 float myFloat = [[NSUserDefaults standardUserDefaults] floatForKey:@"sensitivityKey"]
,但我想要所有视图控制器都可用的值,所以我在模型类中将它定义为NSNumber.
那么,请任何人能够告诉我为什么这个声明不起作用?
我应该使用NSNumber还是字符串,以保存一个简单的"playerID号码",现在是一个整数,因为我想用Core Data保存它?
在我的数据模型中,我将playerID设置为Integer 16,但Core Data希望NSNumber能够正常工作.这似乎是lika很多代码"没有" - 例子;
NSInteger myValue = 1;
NSNumber *number = [NSNumber numberWithInteger:myValue];
p1.playerID = number;
// Instead of just;
p1.playerID = 1;
// or
p1.playerID.myIntValue;
Run Code Online (Sandbox Code Playgroud)
只是想知道将它设置为字符串而不是更容易然后根据需要来回转换值(playerID)?对此有任何智慧(经验)的话?谢谢 :-)
我想制作一个演示应用程序,我可以在代码中输入4个数字,然后按1,2,3顺序对其进行排序NSLog.有简单的算法或方法吗?
最新版本的Objective-C和XCode(4.4).
我有一个代码片段,我无法理解为什么我能够使用某些行,让我解释一下:
// For understanding purpose : (NSMutableArray*)_programStack
id l_topItemOnStack = [_programStack lastObject];
if([l_topItemOnStack isKindOfClass:[NSNumber class]])
{
return [l_topItemOnStack doubleValue];
}
Run Code Online (Sandbox Code Playgroud)
我的问题:因为我l_topItemOnStack的类型id而且我没有把它变成一个NSNumber,我怎么能用到[l_topItemOnStack doubleValue].
我猜我必须首先将其转换为NSNumber以访问NSNumber方法...
我在这里错过了什么?
我在转换NSNumber为字符串和字符串时遇到问题NSNumber.
这是一个示例问题:
NSString *stringValue = @"9.2";
NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init];
NSLog(@"stringvalue:%@",[[formatter numberFromString: stringValue] stringValue]);
Run Code Online (Sandbox Code Playgroud)
输出将是:
stringvalue:9.199999999999999
Run Code Online (Sandbox Code Playgroud)
我需要检索原始值,在示例中应该是9.2.相反,当原始字符串9.4输出仍然是9.4.您是否知道如何检索原始字符串值而不对其NSNumber做任何事情?
nsnumber ×10
objective-c ×8
iphone ×4
casting ×2
core-data ×2
ios ×2
arrays ×1
attributes ×1
cocoa-touch ×1
nslog ×1
nsstring ×1