Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/444.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将javascript函数转换为Obj-C函数_Javascript_Objective C_Function - Fatal编程技术网

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

将javascript函数转换为Obj-C函数,javascript,objective-c,function,Javascript,Objective 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

我想在我的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;
}

您需要通过在字符串前面加上
@
s并引用它们来构建字符串:

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;
}

您首先需要学习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*
  • 我建议不要将
    ==
    用于
    浮动
    。如果两个浮点数相差.00000001会发生什么情况?嗯,
    %
    操作符会自动给你整数,但我还是不喜欢它

然而,你不应该重新发明轮子。Cocoa有一个API为您进行日历转换。参见

的建议,这是最接近的。但是
inta=(julianDay+1.5)%7行生成两个
错误实例:二进制操作数无效%(有'double'和'int')
我搜索了该错误并尝试了以下操作:
int A=fmod(julianDay,7)这编译得很好-现在来试试吧。感谢您提供日期/时间的链接!啊,对不起。我不知道
%
不接受float和int!我对这一点好奇了一段时间,但用谷歌搜索是不可能的:你的答案中的
NSString*calcDayOfWeek()…
和@spoticouscompiler的答案中的
NSString*calcDayOfWeek()…
有什么区别?移动
*
会对语法产生影响吗?不会。阅读编程语言C的说明:基本上,非字母字符右边或左边的任何空格对语言都没有任何意义。你可以把它们去掉
NSString*calc.
就可以了。