标签: nsnumber

我可以在任何需要NSNumber的地方使用NSDecimalNumber吗?

NSDecimalNumber是NSNumber的子类,据我所知,它实现了NSNumber实例所期望的所有NSNumber方法.

鉴于此,是否可以将NSDecimalNumbers提供给任何期望NSNumber的代码?

唯一可能的问题可能是检查参数是NSNumber实例的代码,但由于NSNumber是一个类集群,这样的代码必须检查实例是NSNumber 的子类,NSDecimalNumber实例应该通过它试验.

cocoa cocoa-touch objective-c nsnumber nsdecimalnumber

3
推荐指数
1
解决办法
1648
查看次数

将NSNumber存储为long double类型

我有一个号码存储在一个NSNumber我想放入的号码中long double,如下所示:

NSNumberFormatter * f = [[NSNumberFormatter alloc] init]; 

[f setNumberStyle:NSNumberFormatterDecimalStyle]; 

[f setMinimumSignificantDigits:5];

NSNumber * myNumber = [f numberFromString:@"1.1234567899"]; 

long double lnumber = mynumber;
NSLog(@"%Lf ",lnumber);
Run Code Online (Sandbox Code Playgroud)

cocoa-touch types objective-c nsnumber ios

3
推荐指数
1
解决办法
1万
查看次数

NSNumber numberWithInt在数字> = 13时崩溃

我对Objective-C很新.我已经阅读了类似的问题,但我无法弄清楚如何用这些信息解决我的问题.

基本上,我这样做:

NSMutableArray* array1 = [[NSMutableArray alloc] initWithCapacity: 1];
NSNumber *n1 = [NSNumber numberWithInt: 12];
[array1 addObject: n1];
NSMutableArray* array2 = [[NSMutableArray alloc] initWithCapacity: 1];
NSNumber *n2 = [NSNumber numberWithInt: 13];
[array2 addObject: n2];
Run Code Online (Sandbox Code Playgroud)

将NSNumber 12添加到数组中可以很好地完成,但是添加13(或更高的值)不会; 程序在运行时崩溃(没有错误消息,并且生成的stackdump文件完全空白).如果重要的话,我正在Cygwin中使用gcc进行编译.我知道这可能与保留计数有关,就像我上面提到的问题一样,但我不知道如何修复它.即使我注释掉最后一行,它也会崩溃......所以它会在numberWithInt调用时崩溃,这意味着如果我为n2添加一个retain语句,它就没有机会被调用了.

编辑:因为我被要求提供更多代码,这里是我为了测试这个问题而制作的文件:

#import <stdio.h>
#import <Foundation/NSArray.h>
#import <Foundation/NSValue.h>

int main( int argc, const char *argv[] )
{
    printf("1.\n");
    NSMutableArray* array1 = [[NSMutableArray alloc] initWithCapacity: 1];
    NSNumber *n1 = [NSNumber numberWithInt: 12];
    [array1 addObject: n1];
    NSMutableArray* array2 = [[NSMutableArray alloc] initWithCapacity: 1];
    NSNumber …
Run Code Online (Sandbox Code Playgroud)

debugging objective-c nsnumber

3
推荐指数
1
解决办法
1681
查看次数

NSNumberFormatter numberFromString返回null

这是我的代码

NSNumberFormatter *currencyStyle = [[NSNumberFormatter alloc] init];

    [currencyStyle setFormatterBehavior:NSNumberFormatterBehavior10_4];
    [currencyStyle setNumberStyle:NSNumberFormatterCurrencyStyle];

    NSNumber *amount = [[NSNumber alloc] init];

    NSLog(@"the price string is %@", price);

    amount = [currencyStyle numberFromString:price];

    NSLog(@"The converted number is %@",[currencyStyle numberFromString:price]);
    NSLog(@"The NSNumber is %@", amount);

    NSLog(@"The formatted version is %@", [currencyStyle stringFromNumber:amount]);

    NSLog(@"--------------------");
    self.priceLabel.text = [currencyStyle stringFromNumber:amount]; 

    [amount release];
    [currencyStyle release];
Run Code Online (Sandbox Code Playgroud)

这是日志吐出的内容

价格字符串是5转换后的数字是(null)NSNumber是(null)格式化的版本是(null)

我错过了什么吗?

编辑:更新的代码

NSNumberFormatter *currencyStyle = [[NSNumberFormatter alloc] init];
    [currencyStyle setFormatterBehavior:NSNumberFormatterBehavior10_4];
    [currencyStyle setNumberStyle:NSNumberFormatterCurrencyStyle];

    NSNumber *amount = [currencyStyle numberFromString:price];

    NSLog(@"the price string is %@", price);
    NSLog(@"The …
Run Code Online (Sandbox Code Playgroud)

iphone objective-c nsnumber nsnumberformatter ios

3
推荐指数
1
解决办法
1万
查看次数

NSNumber没有正确转换并被解释为NSCFString?

我正在遍历API调用中的一组数字:

[6000,6001,2000]例如

这是我的代码:

    for(NSNumber* arrayID in array){                               
        NSManagedObject *ent = [NSEntityDescription insertNewObjectForEntityForName:@"Genre" inManagedObjectContext:self.managedObjectContext];
        [ent setValue:arrayID forKey:@"genreID"]; 
        [ent setValue:name forKey:@"genreName"];
        [mySet addObject:ent];
    }
Run Code Online (Sandbox Code Playgroud)

设置arrayID(我的核心数据中是NSNumber)时,我遇到了崩溃:

Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'Unacceptable type of value for attribute: property = "genreID"; desired type = NSNumber; given type = __NSCFString; value = 6002.'
Run Code Online (Sandbox Code Playgroud)

就好像arrayID没有被强制转换为NSNumber一样?Xcode中说,它的一个NSNumber当我键入它,但如果我把[的ArrayID的doubleValue]例如,Xcode的告诉我,身份证"的doubleValue不能为类型发送'’

有任何想法吗?

iphone core-data nsnumber ios

3
推荐指数
1
解决办法
2961
查看次数

添加NSArray中的所有值并找到平均值

我正在使用以下内容获取输出:

    2013-06-06 11:44:27.325 [2570:907] Rating: 0
    2013-06-06 11:44:27.326 [2570:907] Rating: 2
    2013-06-06 11:44:27.327 [2570:907] Rating: 3 


[rateQuery findObjectsInBackgroundWithBlock:^(NSArray *rateObjects, NSError *error)
 {
     if( !error )
     {
         NSLog(@"rateobject %@", rateObjects);

         for (id item in rateObjects) {

             int ratingVal = [[item objectForKey:@"Rating"] intValue];
             NSLog(@"Rating: %d", ratingVal);
         }

     }
 }
 ];
Run Code Online (Sandbox Code Playgroud)

我想添加数字以获得总数然后除以计数以获得平均"评级".

我试过这个,但显然语法不正确.我想我需要使用NSArray而不是"item":

NSNumber *sum=[[item objectForKey:@"Rating"] valueForKeyPath:@"@sum.floatValue"];
                 NSLog(@"Rating Sum: %@", sum);
Run Code Online (Sandbox Code Playgroud)

谢谢你的帮助.

objective-c nsnumber nsarray ios

3
推荐指数
1
解决办法
1578
查看次数

如何使用NSNumber进行乘法和加法

我想用NSNumber实现简单的计算.

例如:

int a;
a=a*10;
a=a+1;
NSLog(@"%d",a);
Run Code Online (Sandbox Code Playgroud)

如果我宣布如何做同样的事情

NSNumber *a;
Run Code Online (Sandbox Code Playgroud)

我想用NSNumber实现相同的逻辑,我使用整数实现.谢谢

objective-c nsnumber

3
推荐指数
1
解决办法
6450
查看次数

'NSNumber'不能转换为'Int'Swift

我正在尝试数学来设置形状节点的位置.它看起来像这样(Swift): var score: NSNumber? score = score! + 1

xcode 6 beta 5运行完美,但xocde 6.1没有运行,报告'NSnumer'无法转换为'Int'

int nsnumber

3
推荐指数
1
解决办法
1万
查看次数

在Swift中使用NSNumber numberWithBool

我提交了我的应用程序第2版以供审核,但由于对iCloud的高备份而被拒绝-当时我不知道这一点,因为我只需要在应用程序中拍照即可。现在我尝试转换该代码

NSError *error = nil;
    NSURL *databaseUrl = [NSURL fileURLWithPath:databasePath];
    BOOL success = [databaseUrl setResourceValue:[NSNumber numberWithBool:YES] forKey:NSURLIsExcludedFromBackupKey error:&error];
    if(!success){
    NSLog(@"Error excluding %@ from backup %@", [databaseUrl lastPathComponent], error);
    }
Run Code Online (Sandbox Code Playgroud)

很快我就无法工作...这就是我到目前为止...

func excludeFromBackup() {
    var error:NSError?
    var fileToExclude = NSURL.fileURLWithPath("path")
    var success:Bool = fileToExclude?.setResourceValue(NSNumber.numberWithBool(true), forKey: NSURLIsExcludedFromBackupKey, error: &error)
    if success {
        println("worked")
    } else {
        println("didn't work")
    }
}
Run Code Online (Sandbox Code Playgroud)

如您所见,我的numberWithBool值失败。

谁能帮我?有人转换过吗?

提前致谢...

nsurl nsnumber ios swift ios8

3
推荐指数
1
解决办法
5704
查看次数

iOS:当属性为双精度时,Core Data 无法保存

我想在我把笔记本电脑飞出窗外之前先在这里问一下。我对 iOS 开发非常陌生,并且一直在尝试使用 Core Data 尝试创建费用管理器应用程序。我有一个名为“Account”的实体,它有两个非可选属性(name 和 initBalance),如下所示:

在此处输入图片说明

我还创建了一个 NSManagedObject 子类,如下所示:

//Account.swift

class Account: NSManagedObject {

    override func awakeFromInsert() {
        super.awakeFromInsert()
        initBalance = NSNumber(double: 0.0)
        name = ""
    }    
}

//Account+CoreDataProperties.swift

extension Account {

    @NSManaged var initBalance: NSNumber
    @NSManaged var name: String
}
Run Code Online (Sandbox Code Playgroud)

Account 实体使用 NSFetchedResultsController 呈现在 AccountsViewController(符合 NSFetchedResultsControllerDelegate 协议的 UITableViewController 的子类)中。要添加一个新帐户,我使用 AccountsViewController 中的 segue 将我定向到 AccountInfoViewController(如下所示),它有两个 textField,一个用于名称,另一个用于帐户余额。当后者即将消失时,将在上下文中插入一个新帐户,其名称和余额来自文本字段。一旦父控制器出现 (AccountsViewController),它就会尝试保存更改并更新 tableView。

现在,如果我插入一个余额为整数的新帐户,则生活很好;上下文能够保存更改,tableView 通过显示新插入的帐户更新其行,我很高兴。当我尝试插入余额为十进制数的帐户时,应用程序在上下文尝试保存更改的位置崩溃。关于它为什么会发生,我根本没有得到任何有用的错误。这是用于管理文本字段的控制器的代码:

class AccountInfoViewController: UIViewController {

    @IBOutlet weak var nameField: UITextField!
    @IBOutlet weak var balanceField: UITextField!

    var store: DataStore! // …
Run Code Online (Sandbox Code Playgroud)

crash core-data nsnumber ios swift

3
推荐指数
1
解决办法
965
查看次数