标签: nsdecimalnumber

在iPhone开发中创建自动释放对象

我需要创建一些NSDecimalNumber对象作为我的应用程序的一部分(因为我需要它们提供的计算精度)但我注意到在计算中它们返回NSDecimalNumber对象,这些对象可能是自动释放的.

我的问题是,在iPhone应用程序中我是否可能会进行大量计算,这是否存在潜在问题.

问题不仅仅与NSDecimalNumber有关,而是与开发iPhone应用程序时有时不可避免地创建自动释放的对象有关.

我们将非常感激地收到关于这一点的任何详细答案.

memory iphone objective-c autorelease nsdecimalnumber

1
推荐指数
2
解决办法
1614
查看次数

Objective-C - 如何从字符串中删除字符?

我有一个UILabel有一个格式化的字符串(格式化为货币),所以有一个美元符号,$ 21.34.

在核心数据实体中,属性是double类型,我使用NSDecimalNumber来保存到数据库.

    self.purchase.name = self.nameTextField.text;
    NSString *string = self.amountLabel.text
    NSDecimalNumber *newAmount = [[NSDecimalNumber alloc] initWithString:string];
    NSLog(@"%@", string); // THIS RETURNS NaN, because of dollar sign i think

    NSManagedObjectContext *context = self.purchase.managedObjectContext;

    NSError *error = nil;
    if (![context save:&error]) 
    {
        NSLog(@"Unresolved error %@, %@", error, [error userInfo]);
        abort();
    }
Run Code Online (Sandbox Code Playgroud)

无论如何,我需要这不是NaN,所以我的想法是删除美元符号,但我不知道该怎么做,或者也许有更好的方法来实现我的目标.

iphone formatting objective-c nsdecimalnumber

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

用于NSDecimalNumber的ceilf和floorf等效方法

对于NSDecimalNumber类型,ceilf和floorf是否有等效的方法?我似乎找不到任何东西.

cocoa cocoa-touch nsdecimalnumber

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

同时乘以3个NSDecimalNumber

首先,我正在使用NSDecimalNumbers,因为我正在处理货币.我对十进制数字本身没有任何问题,我想知道是否可以同时乘以3个NSDecimalNumber(s).

换句话说,如果我乘以3个整数,我会简单地说:

int a = 2;
int b = 5;
int c = 7;

int x = a * b * c;
Run Code Online (Sandbox Code Playgroud)

但是,为了乘以NSDecimalNumbers,您必须使用该decimalNumberByMultiplyingBy 方法.

使用这种方法,我必须进行2次计算才能乘以我正在处理的3个NSDecimalNumbers,如下所示:

NSDecimalNumber *d1 = [NSDecimalNumber decimalNumberWithString:@"1.502"];
NSDecimalNumber *d2 = [NSDecimalNumber decimalNumberWithString:@"12.472"];
NSDecimalNumber *d3 = [NSDecimalNumber decimalNumberWithString:@"0.765"];

//Calculation
NSDecimalNumber *initialValue = [d1 decimalNumberByMultiplyingBy:d2];
NSDecimalNumber *finalValue = [initialValue decimalNumberByMultiplyingBy:d3];

//Formatting
NSString *output = [NSString stringWithFormat:@"%@", finalValue];
NSDecimalNumber *n = [NSDecimalNumber decimalNumberWithString:output];

//r is my NSNumberFormatter, which I've configured elsewhere
NSString *s = [r stringFromNumber:n];

NSLog(@"%@",s);
Run Code Online (Sandbox Code Playgroud)

有没有办法同时将所有3个NSDecimalNumbers乘以而不是这种笨重的方式呢?

iphone xcode objective-c nsdecimalnumber ios

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

将NSString转换为NSDecimalNumber

在我的核心数据模型中,"金额"是实体"跟踪"中的属性.如何在整个代码中将金额转换为NSDecimalNumber?我相信有经验的人可以在3分钟内做到这一点,我已经看了好几天了.

- (IBAction)save {
if (![amount.text isEqualToString:@""]) {
Tracking *tracking = [NSEntityDescription insertNewObjectForEntityForName:@"Tracking"
                                               inManagedObjectContext:self.managedObjectContext];

    NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
    NSEntityDescription *weightEntity = [NSEntityDescription entityForName:@"Tracking" inManagedObjectContext:self.managedObjectContext];
    [fetchRequest setEntity:weightEntity];
    NSSortDescriptor *sortDescriptor = [NSSortDescriptor sortDescriptorWithKey:@"timestamp" ascending:NO];
    [fetchRequest setSortDescriptors:[NSArray arrayWithObject:sortDescriptor]];

    NSError *error = nil;
    NSArray *result = [self.managedObjectContext executeFetchRequest:fetchRequest error:&error];

    Tracking *person = [result objectAtIndex:0];

    NSLog(@"%@",person.date);

        NSDate *date = [NSDate date];
    NSDateFormatter *dateFormat = [[NSDateFormatter alloc]init];
    [dateFormat setDateFormat:@"MMM dd, yyyy"];

    NSString *dateString = [dateFormat stringFromDate:date];
    //NSString *dateString = @"Jan 13 2013";
    //Tracking *track …
Run Code Online (Sandbox Code Playgroud)

xcode core-data nsstring nsdecimalnumber

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

如何在NSMutableArray中添加所有十进制数

我有NSMutableArray一些其中有一些NSDecimalNumber,比如(500,50.80,70,8000)

现在我想把所有这些加decimal numbers在一起.

我试过用

for (NSDecimalNumber *number in self.numbersArray)
{
    NSDecimal *sum += [number decimalValue]
}
Run Code Online (Sandbox Code Playgroud)

但失败了.

objective-c nsarray nsdecimalnumber

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

将NSDecimalNumber转换为NSString

我使用此代码获取md5字符串哈希

- (NSString *) md5:(NSString *) input
{
    const char *cStr = [input UTF8String];
    unsigned char digest[16];
    CC_MD5( cStr, strlen(cStr), digest ); // This is the md5 call

    NSMutableString *output = [NSMutableString stringWithCapacity:CC_MD5_DIGEST_LENGTH * 2];

    for(int i = 0; i < CC_MD5_DIGEST_LENGTH; i++)
        [output appendFormat:@"%02x", digest[i]];

    return  output;
}
Run Code Online (Sandbox Code Playgroud)

当我这样做时,它完美无缺

[self md5:@"mystring"];
Run Code Online (Sandbox Code Playgroud)

但是当我这样做的时候

[self md5:userId];
Run Code Online (Sandbox Code Playgroud)

我有一个错误

因未捕获的异常'NSInvalidArgumentException'而终止应用程序,原因:' - [NSDecimalNumber UTF8String]:无法识别的选择器发送到实例0x61a7080'

userId是一个NSString

NSString *userId; @property(retain,nonatomic) NSString *userId;
Run Code Online (Sandbox Code Playgroud)

但它会影响facebook的用户ID,就像我尝试过的"3309843"

[self md5:[userId stringValue]]];
Run Code Online (Sandbox Code Playgroud)

我仍然有同样的错误

更新 我试过这个

[self md5:@"980232376"];
Run Code Online (Sandbox Code Playgroud)

仍然有相同的错误,我认为问题是方法md5.我不能得到一串数字的md5?

cocoa-touch md5 objective-c nsdecimalnumber ios

0
推荐指数
1
解决办法
2921
查看次数