繁体   English   中英

将javascript函数转换为Obj-C函数

[英]Convert javascript function to Obj-C function

我想在Obj-C应用程序中使用一堆用Javascript编写的函数。 我制作了一个头文件,并转换了第一个文件,但第二个文件卡住了。 这是我开始的事情,到目前为止我所做的一切都行不通...

function calcDayOfWeek(juld)
    {
        var A = (juld + 1.5) % 7;
        var DOW =     (A==0)?"Sunday":(A==1)?"Monday":(A==2)?"Tuesday":(A==3)?"Wednesday":(A==4)?"Thursday":(A==5)?"Friday":"Saturday";
        return DOW;
    }

...以及我的尝试:

NSString calcDayOfWeek(float julianDay)
{
    float A = (julianDay + 1.5) % 7;
    NSString DOW = (A==0)?"Sunday":(A==1)?"Monday":(A==2)?"Tuesday":(A==3)?"Wednesday":(A==4)?"Thursday":(A==5)?"Friday":"Saturday";
    return DOW;
}

它应该根据儒略日编号的输入返回带有星期几的字符串。

编辑:根据Yuji的答案,这是有效的...

NSString* calculateDayOfWeek(float julianDay) {
    int a = fmod(julianDay + 1.5, 7);
    NSString* dayOfWeek = (a==0)?@"Sunday":(a==1)?@"Monday":(a==2)?@"Tuesday":(a==3)?@"Wednesday":(a==4)?@"Thursday":(a==5)?@"Friday":@"Saturday";
    return dayOfWeek;
}

您首先需要学习Objective-C的语法和语法 该功能将是

NSString* calcDayOfWeek(float julianDay)
{
     int A = ((int)(julianDay + 1.5)) % 7;
     NSString* DOW = (A==0)?@"Sunday":(A==1)?@"Monday":(A==2)?@"Tuesday":(A==3)?@"Wednesday":(A==4)?@"Thursday":(A==5)?@"Friday":@"Saturday";
     return DOW;
}
  • 在Objective-C中,对象的变量是指针,而不是对象本身。 您需要NSString*而不是NSString
  • @"..."是作为对象的Objective-C字符串。 "..."是一个C字符串,它只是char*
  • 我建议不要将==用作float 如果两个浮点数相差.00000001会怎样? 好吧, %运算符会自动为您提供整数,但我仍然不喜欢它。

但是,您不应该重新发明轮子 可可有一个API为您执行日历转换。 请参阅日期和时间编程主题。

您将需要使用@ s 作为前缀将字符串构建为NSString ,并对其进行引用:

NSString *calcDayOfWeek(float julianDay)
{
    float A = (julianDay + 1.5) % 7;
    NSString *DOW = (A==0)?@"Sunday":(A==1)?@"Monday":(A==2)?@"Tuesday":(A==3)?@"Wednesday":(A==4)?@"Thursday":(A==5)?@"Friday":@"Saturday";
    return DOW;
}

您需要更改声明函数的方式。 尝试这个:

-(NSString *) dayOfWeek:(float)julianDay {

    float A = (julianDay + 1.5) % 7;
    NSString *DOW = (A==0)?@"Sunday":(A==1)?@"Monday":(A==2)?@"Tuesday":(A==3)?@"Wednesday":(A==4)?@"Thursday":(A==5)?@"Friday":@"Saturday";
    return DOW;
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM