小编Oys*_*sio的帖子

在UITextfield中使用NSNumberFormatter进行实时格式化

我有UITextfield,用户可以输入一个美元金额,我希望textfield总是用两位小数格式化($.##).必须始终保持格式化.但我仍然坚持如何将输入的数字附加到文本字段中的现有数字?

//This delegate is called everytime a character is inserted in an UITextfield.
- (BOOL) textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
    if ([textField tag] == amountTag)
    {

        NSString *amount = string;

//How do I append the already entered numbers in the textfield to the new entered values   ?
//??

        //Get new formatted value
        NSString *newAmount = [self formatCurrencyValue:[amount doubleValue]];

        [textField setText:[NSString stringWithFormat:@"%@",newAmount]];

        return NO;
    }

    //Returning yes allows the entered chars to be processed
    return YES;
}


-(NSString*) formatCurrencyValue:(double)value
{ …
Run Code Online (Sandbox Code Playgroud)

iphone cocoa-touch objective-c

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

Iphone的视网膜显示在模拟器中

我对如何使用模拟器构建需要支持iphone 4更高分辨率的应用程序感到困惑.

我会选择iphone4模拟器来运行应用程序,[[UIScreen mainScreen] bounds]这会给我960x640,但它仍然给我旧的分辨率(480x320)?

虽然iphone4模拟器在我的屏幕上显示为一个巨大的手机,但它似乎仍然只包含480x320像素.例如,当我想要在700行显示某些东西时,它只会掉线?

感谢您的任何意见.

iphone points ios4

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

UIDatePicker UIDatePickerModeCountDownTimer模式无法选择零分钟

我使用的UIDatePickerinUIDatePickerModeCountDownTimer模式允许用户选择小时和分钟,但不允许用户选择零小时和零分钟。如果小时设置为零并且用户尝试选择零分钟,则会自动跳转到 01。

我研究了文档,除了创建自定义选择器之外,似乎没有什么可以让我这样做。创建自定义选择器的问题是我丢失了选择指示器(小时、分钟)中的标题,并且似乎也没有办法添加这些标题。这两天我一直在寻找答案!我不敢相信 UIPickerView 没有一个属性来设置每个部分的指示器标题。

任何帮助,将不胜感激。

iphone cocoa-touch objective-c

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

将ARC用于新项目是否为时尚早?

我即将开始一个新项目,我想知道我是否应该使用ARC.

当我知道新项目对旧代码和尚未转换为ARC的外部库(three20,shareKit,ASIHTTPRequest,..)有很多依赖关系时,我不知道是否建议使用ARC?一些库非常大,所以我认为为每个单独的文件添加-fno-objc-arc标志会很繁琐.

似乎Apple已经明确地为IOS采用ARC方式,并且每个IOS开发人员迟早都要进行转换.

但现在加入ARC的浪潮可能还为时尚早?

objective-c ios automatic-ref-counting

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

NSNumberFormatter,如何删除货币符号中的空格

我有一些值,我需要格式化为货币字符串.似乎在使用NSNumberFormatter格式化金额时,生成的货币字符串将包含一个或多个空格.

例如,使用以下代码格式化@"1000"为欧洲货币格式将导致返回@"1,000,00 €".请注意货币符号前的空白区域.

NSNumberFormatter *tempNumberFormatter = [[NSNumberFormatter alloc] init];
 [tempNumberFormatter setFormatterBehavior:NSNumberFormatterBehavior10_4];
 [tempNumberFormatter setNumberStyle:NSNumberFormatterCurrencyStyle];
 [tempNumberFormatter setLocale:[NSLocale currentLocale]];
 [tempNumberFormatter setGeneratesDecimalNumbers:YES];
 [tempNumberFormatter setMaximumFractionDigits:2];
 [tempNumberFormatter setMinimumFractionDigits:2];
 [tempNumberFormatter setAlwaysShowsDecimalSeparator:YES];

 NSString *value = @"1000";

 NSNumber *number = [NSNumber numberWithFloat:[value doubleValue]];

 NSString *result = [tempNumberFormatter stringFromNumber:number];

 [tempNumberFormatter release];

 // result  = 1.000,00 € 
Run Code Online (Sandbox Code Playgroud)

我首先考虑通过过滤字符串中的空格来轻松解决这个问题,但由于某些原因这不起作用,下面的代码片段没有按照我的预期进行:

[result replaceOccurrencesOfString:@" " withString:@"" options:NSCaseInsensitiveSearch range:NSMakeRange(0, [result length])];
Run Code Online (Sandbox Code Playgroud)

有没有办法使用NSNumberFormatter返回没有空格空格的格式化字符串?(1.000,00€)

iphone cocoa cocoa-touch objective-c

3
推荐指数
2
解决办法
2230
查看次数

为什么我不能将泛型类型转换为值类型

这可能是一个基本问题,但为什么在将值类型列表传递给泛型方法时,我不能将泛型类型转换回原始类型?

IList<int> list = new List<int>() { 1, 2, 3, 4, 5, 6, 7, 8 };
Inverse<int>(list);

  public void Inverse<T>(IList<T> list)
        {
            for (i = 0; i <= list.Count / 2; i++)
            {
                int a = list[i] as Int16; //=> does not work
                int b = (int)list[i]; //=> does not work either

            }
         }
Run Code Online (Sandbox Code Playgroud)

c# generics

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

Oracle TOP N订购了行

我想从按日期排序的Oracle表中获取前N行.

执行此操作的常用方法,此解决方案返回我在SO/google上可以找到的每个问题.

Select *
from
(select * from
myTable 
ordered by Date desc)
where rownum < N
Run Code Online (Sandbox Code Playgroud)

在我的情况下,这个解决方案是不切实际的,因为myTable包含大量的行,这会导致Oracle花费太长时间来返回子查询中的所有行.

问题是,有没有办法限制子查询中返回的ORDERED行数?

sql oracle

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

从xml文件中删除独立属性

我有一个xml文件,我需要修改并将其写回输出文件.问题是结果outputfile在根声明中包含一个额外的属性"standalone",它在原始输入文件中不存在.有什么办法可以阻止XmlDocument添加这个属性吗?

我试过的代码:

//read input xml
 XmlDocument xDoc  = new XmlDocument();
 xDoc.Load(originalFile);

//do some stuff
//....

//write back to output
using(XmlTextWriter xml2 = new XmlTextWriter(outputFile, Encoding.UTF8) { Formatting = Formatting.Indented })
            {   
                xDoc.CreateXmlDeclaration("1.0", null, "");
                xDoc.Save(xml2);

            }
Run Code Online (Sandbox Code Playgroud)

inputfile包含这个:

<?xml version="1.0" encoding="UTF-8" ?>
...
Run Code Online (Sandbox Code Playgroud)

output.xml包含:

<?xml version="1.0" encoding="utf-8" standalone="yes"?>
...
Run Code Online (Sandbox Code Playgroud)

c# xml xmldocument

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

阻止回调崩溃

我在viewControllers之间使用Blocks而不是委托进行回调,但是我无法弄清楚为什么这种情况不起作用:

所以我有一个调用detailViewController的mainViewController,当返回tableView时,需要重新加载mainViewController上的属性.

DetailViewController *actionDetail = [[DetailViewController alloc]initWithSaveBlock:^{
        [self.tableView reloadData]  //app crashes here
}];
Run Code Online (Sandbox Code Playgroud)

在detailViewController中,当用户点击"保存按钮"时,会调用"保存"

- (void)save
{
    if (self.saveBlock)
        self.saveBlock();

    [self dismissModalViewControllerAnimated:YES];
}
Run Code Online (Sandbox Code Playgroud)

由于某种原因,[self.tableView reloadData]这不符合[self dismissModalViewControllerAnimated:YES].如果我删除其中一个应用程序似乎工作正常,显然比我错过了预期的行为.

当应用程序崩溃时,控制台中的消息是:

Previous frame inner to this frame (gdb could not unwind past this frame)
Run Code Online (Sandbox Code Playgroud)

任何人都知道为什么这不起作用?

更新: SaveBlock定义如下

typedef void (^SaveBlock)();

@interface DetailViewController : UIViewController
{

}
@property(nonatomic,assign)SaveBlock saveBlock;
Run Code Online (Sandbox Code Playgroud)

iphone objective-c ios objective-c-blocks

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

添加双打

我有一个文本文件,其中包含两个代表货币金额的数字.当我以双打的形式阅读它们时,让我们说:double a = 73.7926 double b = 1.1

并将它们加在一起我得到的结果是:74.892599999999987 我希望有的地方74.8926

知道为什么这样做以及我需要做些什么来获得我预期的结果而不进行舍入?

c# double

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