追加の変数を作成せずに (getter ではなく) ドット表記を使用して特定のプロパティにアクセスしたい場合、NSArray 内のオブジェクトを自分の型にキャストすることがよくあります。
object-c にどのクラスのオブジェクトを NSArray に保存するかを伝えるためのクールな機能やトリックはありますか?これにより、コンパイラは配列内のオブジェクトを ID ではなく、私のタイプであると見なします。
追加の変数を作成せずに (getter ではなく) ドット表記を使用して特定のプロパティにアクセスしたい場合、NSArray 内のオブジェクトを自分の型にキャストすることがよくあります。
object-c にどのクラスのオブジェクトを NSArray に保存するかを伝えるためのクールな機能やトリックはありますか?これにより、コンパイラは配列内のオブジェクトを ID ではなく、私のタイプであると見なします。
あなたが次のようなことをしていることを意味する場合:
x = ((MyClass *)[myArray objectAtIndex:2]).property1;
読みやすくするために、2 行に分割できます。
MyClass *myObject = [myArray objectAtIndex:2]
x = myObject.property1;
最初のケースに本当に設定されている場合はNSArray
、タイプのアクセサーを持つカテゴリを作成できます。
@implementation NSArray (MyCategory)
- (MyClass *)myClassObjectAtIndex:(NSUInteger)index
{
return [self objectAtIndex:index];
}
@end
そして、あなたはそれを好きなように使うことができます:
x = [myArray myClassObjectAtIndex:2].property1;