从命令行工具到可可应用程序

时间:2012-04-09 09:22:11

标签: xcode datepicker nsdate nsdateformatter

我开始在objective-c中探索编程,并为命令行工具编写了几行代码。它工作但现在我试图在Cocoa应用程序中重写它,我有一些问题。这是单行工具的工作代码:

 //Formattazione delle date preimpostate
    NSDateFormatter *formatoData = [[NSDateFormatter alloc] init];
    [formatoData setDateFormat:@"dd/MM/yyyy"];

    //Definizione della data di inizio e della data di fine
    NSDate * dataInizio = [formatoData dateFromString:datePicker];

    //Risultato
    NSString *risultato=[dataInizio descriptionWithCalendarFormat:@"%w" timeZone:nil locale:nil];

    //Output
    NSLog(@"Il giorno impostato è %@", risultato);

为了创建Cocoa应用程序,我创建了一个名为VisualizzaClasse的Objective-C类。 VisualizzaClasse.h:

#import <Foundation/Foundation.h>

@interface VisualizzaClasse : NSObject
{
    IBOutlet NSDatePicker *datePicker;
    IBOutlet NSTextView *textView;}
- (IBAction)mostraRisultato:(id)sender;

@end

VisualizzaClasse.m:

#import "VisualizzaClasse.h"

@implementation VisualizzaClasse

- (IBAction)mostraRisultato:(id)sender;
{
     //Formattazione delle date preimpostate

        NSDateFormatter *formatoData = [[NSDateFormatter alloc] init];
        [formatoData setDateFormat:@"dd/MM/yyyy"];
        //Definizione della data di inizio e della data di fine
   NSDate * dataInizio = [formatoData dateFromString:datePicker];

        //Risultato
        NSString *risultato=[dataInizio descriptionWithCalendarFormat:@"%w" timeZone:nil locale:nil];

    [textView insertText:[NSString stringWithFormat:@"%@ \n", risultato]];
}


@end

接口由DatePicker,TextView和按钮组成。我不能使DatePicker替换dateFromString。错误是:不兼容的指针类型将'NSDatePicker _strong *'发送到'NSString *'类型的参数,在行:

NSDate * dataInizio = [formatoData dateFromString:datePicker];

任何人都可以帮助我吗?

2 个答案:

答案 0 :(得分:0)

dateFromString方法需要NSString,您的参数类型是NSDatePicker

使用NSDate * dateVariable = datePicker.date;而是dateFromString,如果你需要将它转换为NSDate

获得NSDate后,您可以使用https://developer.apple.com/library/mac/#documentation/Cocoa/Reference/Foundation/Classes/NSDateFormatter_Class/Reference/Reference.html

中提到的格式化程序

答案 1 :(得分:0)

我假设您已经在InterfaceBuilder中正确连接了NSDatePicker,因此它连接到DatePicker。

如果是这样,您应该能够分配如下:

NSDate * unformattedDate = [ datePicker dateValue ];

然后像以前一样进行格式化,使用unformattedDate作为格式化程序的输入。