1

我开始探索 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];

谁能帮我?

4

2 回答 2

0

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

使用 NSDate *dateVariable = datePicker.date; 如果您需要将其转换为 NSDate,则改为 dateFromString

拥有 NSDate 后,您可以使用https://developer.apple.com/library/mac/#documentation/Cocoa/Reference/Foundation/Classes/NSDateFormatter_Class/Reference/Reference.html中提到的格式化程序

于 2012-04-09T09:40:48.710 回答
0

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

如果是这样,您应该能够按以下方式分配:

NSDate * unformattedDate = [ datePicker dateValue ];

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

于 2012-04-09T12:56:45.243 回答