これは私の最初の投稿です。私は Obj-C の経験が少ししかありません。私は Lion の XCode 3 で非常に非推奨の AppleScript Studio で開発していますが、私のソフトウェアで使用するためにいくつかの Obj-C ライブラリを作成しました。これらのライブラリは、AppleScript との間で値をやり取りするように設計されています。これらの 1 つは、Calendar Store にアクセスします。私の用語が絶望的にずれている場合はご容赦ください。:)
問題は、AppleScript に返すことができる可変配列内のオブジェクトに「イベントの場所」を入れようとすることです。この方法で、場所以外のイベントのほとんどすべてのプロパティを正常に取得できます。
これが(部分的な)コードで、コメントにビルドエラーが表示されます:
NSEnumerator *eventEnumerator = [[calStore eventsWithPredicate:predicate] objectEnumerator];
id event;
while (event = [eventEnumerator nextObject]) {
NSMutableArray *eachEvent = [NSMutableArray arrayWithCapacity:10];
// the following, and most other properites not included here, works fine:
if ([event notes] == nil) {
[eachEvent addObject:[NSString stringWithFormat:@""]];
}
else
{
[eachEvent addObject:[event notes]]; //#06
}
@try {
if ([event location] == nil {
// error:
// invalid operands to binary == (have 'CGFloat' and 'struct NSNull *')
// incompatible type for argument 1 of 'addObject:'
[eachEvent addObject:[NSString stringWithFormat:@""]];
}
else
{
[eachEvent addObject:[event location]]; //#10
// error: incompatible type for argument 1 of 'addObject:'
}
}
@catch(NSException *exception) {
[eachEvent addObject:[NSString stringWithFormat:@"-10-"]]; // #10 dummy for location
}
// now add all properties of this event (eachEvent) to all events information (eventInformation)
[eventInformation addObject:eachEvent];
}
return eventInformation;
}
同じエラーでif ([event location] = nil {
使用する代わりに試しました。if ([event location] == [NSNull null])
うまくいけば正しいコードで、誰かがこれに光を当てることができますか?