簡體   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