0

Obj-C に移植しようとしている小さな C# ライブラリがあります (実際には、それをガイドとして使用して C# コードを書き直しています)。ライブラリの目的は、iOS カレンダー アプリの定期的な予定を生成することです。C# 構造体を Obj-C オブジェクトに移植する際に問題が発生しています。これは、予定情報を保持する構造体の 1 つに対して私が持っているものです。

@interface Appointment : NSObject  {
@public
    NSDate *apptStartTime;
    NSDate *apptEndTime;
    NSString *key;
}
@end

私が書いたメソッドの 1 つは、日付、一連のスケジュール (C# のポートでもありますstruct)、および予定のリスト (NSMutableSet上記の Appointment インターフェイスを含む を使用しています) を受け入れます。予定のメソッドを機能させることができれば、残りを把握できると確信しています (と思います)。に予定を追加するコードは次のNSMutableSetとおりです。

-(void) addAppointmentsForDate:(NSDate *)checkDate andSchedules: (NSMutableSet *)schedules andAppt:(NSMutableSet *)appointments {

Appointment *appt = [[Appointment alloc]init];

for(NSMutableSet *schedule in schedules)  {

    if(schedule.occursOnDate(checkDate))   {
        appt = [self generateAppointment:checkDate andSchedule: [schedules removeObject:schedules]];
        [appointments addObject: appt];

        }
    }
}


-(Appointment *) generateAppointment: (NSDate *) checkDate andSchedule: (Schedule *) schedule  {

Appointment *appt = [[Appointment alloc]init];

appt->apptStartTime = schedule->timeOfAppointment;
appt->apptEndTime = nil;  //  TODO  
appt->key = schedule->key;

return appt;

}

ifステートメント でビルド エラーが発生します。

互換性のないタイプ「Schedule *」のパラメーターに「void」を送信しています

これまでに使用したことNSMutableSetsも、C# から移植しようとしたこともありません。ご覧のとおり、C# 構造体の移植に取り組んでいます。セットに関するすべての Apple ドキュメントと、C# と Obj-C の違いを説明するいくつかのドキュメントを読みました。

誰かが私が間違っていることを説明するか、セット内の要素を参照する例を教えてくれる良いドキュメントを教えてもらえますか?

4

2 に答える 2

0

コードを見ると、C++ と Objective-C のどちらのコードを書いているのかよくわからないという印象を受けます。

if(schedule.occursOnDate(checkDate))

Objective-C メソッドを再度呼び出すにはどうすればよいですか?

for(NSMutableSet *schedule in schedules)

あなたはこれについて確信を持っていますか?スケジュールは NSMutableSet* です。つまり、スケジュールの変更可能なセットの要素が再び変更可能なセットであると言っているのですか? それはかなり珍しいことですが、そう言えば…

appt = [self generateAppointment:checkDate andSchedule: [schedules removeObject:schedules]];

これは奇妙なことではありません。あなたは何だと思いますか

[schedules removeObject:schedules]

するつもり?セットがそれ自体を要素として持つことを期待していますか?

私のアドバイス:寝なさい。10時間寝てください。おいしい朝食の後、コードをもう一度見てください。

于 2014-03-07T23:44:48.510 に答える