回答編集履歴

2

hook

2016/12/16 02:06

投稿

fuzzball
fuzzball

スコア16731

test CHANGED
@@ -28,7 +28,7 @@
28
28
 
29
29
 
30
30
 
31
- 定義されていないプロパティにアクセスするとsetValue(_:forUndefinedKey:)が呼ばれますので、これをoverrideすると例外を発生させずに処理を行うことが出来ます。
31
+ 定義されていないプロパティにアクセスするとsetValue(_:forUndefinedKey:)が呼ばれますので、これをoverrideして例外をフックします。
32
32
 
33
33
 
34
34
 

1

Hello!

2016/12/16 02:06

投稿

fuzzball
fuzzball

スコア16731

test CHANGED
@@ -21,3 +21,51 @@
21
21
  英語ドキュメント(新しい/html)
22
22
 
23
23
  [About Key-Value Coding](https://developer.apple.com/library/content/documentation/Cocoa/Conceptual/KeyValueCoding/)
24
+
25
+
26
+
27
+ # setValue(_:forUndefinedKey:)
28
+
29
+
30
+
31
+ 定義されていないプロパティにアクセスするとsetValue(_:forUndefinedKey:)が呼ばれますので、これをoverrideすると例外を発生させずに処理を行うことが出来ます。
32
+
33
+
34
+
35
+ 下記のコードでは、存在しないキー`hoge`にsetValue()すると挨拶してくれます。(動作確認はSwift2のPlaygroundで行いました)
36
+
37
+
38
+
39
+ ```swift
40
+
41
+ class Hoge : NSObject {
42
+
43
+ override func setValue(value: AnyObject?, forUndefinedKey key: String) {
44
+
45
+ if key == "hoge" {
46
+
47
+ print("Hello!")
48
+
49
+ } else {
50
+
51
+ super.setValue(value, forUndefinedKey: key)
52
+
53
+ }
54
+
55
+ }
56
+
57
+ }
58
+
59
+
60
+
61
+ Hoge().setValue(0, forKey: "hoge")
62
+
63
+ //=> Hello!
64
+
65
+ ```
66
+
67
+
68
+
69
+
70
+
71
+