の私のObjective-Cクラスの.hファイルで、私はこのようなNSIndexPathのためのカテゴリー作成しました:アクセスのObjective-Cカテゴリのプロパティ(関連する参照)スウィフト3の値タイプ
@interface NSIndexPath (YVTableView)
@property (nonatomic, assign) NSInteger subRow;
@end
と、そのクラスの中を。今
static void *SubRowObjectKey;
@implementation NSIndexPath (YVTableView)
@dynamic subRow;
- (NSInteger)subRow
{
id subRowObj = objc_getAssociatedObject(self, SubRowObjectKey);
return [subRowObj integerValue];
}
- (void)setSubRow:(NSInteger)subRow
{
id subRowObj = [NSNumber numberWithInteger:subRow];
objc_setAssociatedObject(self, SubRowObjectKey, subRowObj, OBJC_ASSOCIATION_RETAIN_NONATOMIC);
}
@end
、私はそのは私にエラーを与え、その後IndexPathを使用してスウィフト3にNSIndexPathの副行プロパティにアクセスしていたとき:
メートルファイル、私はそのような実装していますValue of type 'IndexPath' has no member 'subRow'
私は型キャスト
let subIndexPath = indexPath as NSIndexPath
let subRowIndex = subIndexPath.subRow
そのはいつも私を返すを使用してアクセスしようとしている場合は、「0」「サブ行」の値として。 IndexPathは値型で、NSIndexPathは参照型なので、その可能性があります。
Objective-Cを使用してカスタムデリゲートにUITableViewDelegateを実装し、それをSwiftクラスに実装しましたが、カスタムデリゲートメソッドを実装しているSwiftではこの問題に直面しています。
カスタム委任の実装(Swiftコード)でIndexPathの代わりにNSIndexPathを使用しようとしましたが、「YVViewControllerのタイプがプロトコルに準拠していません」というエラーが表示されました。
は、ここに私のカスタムデリゲートの宣言です:
@protocol YVTableViewDelegate <UITableViewDelegate>
@required
- (UITableViewCell *)tableView:(SKSTableView *)tableView cellForSubRowAtIndexPath:(NSIndexPath *)indexPath;
@end
そのスウィフト2.xのと完全に細かい作業が、スウィフト3に移行した後、私はこの問題に直面しています。
たぶん、あなただけのsubRow' 'に0以外の値を設定するのを忘れ?私はちょうどあなたのコードを試して、それは私のためにうまくいった。 –
いいえ、Objective-C - > UITableViewDelegateのサブクラスに値がありません。カスタムデリゲートを使用して、Swiftクラスに渡しますが、Swift - > Custom Delegate実装に渡しています。私はこの問題に直面しています。 –