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

Ste*_*eve 2 javascript function objective-c

我想在我的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;
    }
Run Code Online (Sandbox Code Playgroud)

......和我的尝试:

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;
}
Run Code Online (Sandbox Code Playgroud)

它应该根据朱利安日数的输入返回一周中的字符串.

编辑:Per 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;
}
Run Code Online (Sandbox Code Playgroud)

Yuj*_*uji 5

您首先需要学习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;
}
Run Code Online (Sandbox Code Playgroud)
  • 在Objective-C中,对象的变量是指针,而不是对象本身.你需要NSString*而不是NSString.
  • @"..."是Objective-C字符串,它是一个对象."..."是一个C字符串,只是char*.
  • 我不推荐使用==float.如果两个浮点数相差.00000001会发生什么?好吧, %运算符会自动给你整数,但我仍然不喜欢它.

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