将javascript函数转换为Obj-C函数
我想在我的Obj-C应用程序中使用一系列用Javascript编写的函数。我制作了一个头文件并转换了第一个头文件,但第二个头文件被卡住了。这是我开始做的和我到目前为止做的不起作用的事情将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
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.
就可以了。