2016-06-20 2 views
0

CKRecordクラスをサブスクリプト化できるように拡張しようとしています。そうするために、私は、新しいファイルを作成したCKRecordHelperと呼ばれ、およびdone:スウィフトのオーバーロードメソッドで目的のCエラーが発生する

添字を:

extension CKRecord { 
    subscript(key: String) -> AnyObject! { 
     get { 
      return self.objectForKey(key) 
     } 
     set(newValue) { 
      self.setObject(newValue as? CKRecordValue, forKey: key) 
     } 
    } 
} 

は、しかし、私は読みgetsetライン上のエラーを、取得していますObjective-Cセレクタ 'objectoForKeyedSubscript:'で取得する 'objectForKeyedSubscript'メソッドと同じObjective-Cセレクタで競合します。

この問題を修正するにはどうすればよいですか?私が理解しているところでは、Objective-Cはメソッドのオーバーロードを許可しませんが、私はSwiftを使用しています。最終的には、CKRecordにサブスクリプトを許可できるようにしています。

+0

遊び場で私のテストから、CKRecordはすでに – PeejWeej

答えて

1

@nonobjc属性を使用するとObjCランタイムからメソッドが隠れるので、SwiftコンパイラはObjCコードとの互換性について心配する必要はありません。

extension CKRecord { 
    @nonobjc subscript(key: String) -> AnyObject! { 
     get { 
      return self.objectForKey(key) 
     } 
     set(newValue) { 
      self.setObject(newValue as? CKRecordValue, forKey: key) 
     } 
    } 
} 
+0

はあなた先生ありがとう添字ています!私は助けに感謝します。 – BlackHatSamurai

関連する問題