Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
Slide 1
Slide 1 text
@questbeat KVC Collection Operators
Slide 2
Slide 2 text
http://github.com/questbeat/ KVCCollectionOperatorsExample
Slide 3
Slide 3 text
KVC Collection Operators
Slide 4
Slide 4 text
KVC Collection Operators
Slide 5
Slide 5 text
Key-Value Coding
Slide 6
Slide 6 text
Key-Value Coding • ΦϒδΣΫτͷϓϩύςΟʹ ؒతʹΞΫηε͢ΔͨΊͷΈ • Key (จࣈྻ)ΛͬͯϓϩύςΟΛࣝผ͢Δ [status valueForKey:@“text”]; ! => @“Hi, friends!”
Slide 7
Slide 7 text
Key-Value Coding • KeyPath • υοτͰ۠ΒΕͨෳͷΩʔ͔Β ͳΔจࣈྻ [status valueForKeyPath: @“user.screen_name”]; ! => @“questbeat”
Slide 8
Slide 8 text
KVC Collection Operators
Slide 9
Slide 9 text
KVC Collection Operators • ίϨΫγϣϯԋࢉࢠ • valueForKeyPath: Ͱ͑Δԋࢉࢠ • @ ͔Β࢝·Δจࣈྻ • @count, @sum, @avg ͳͲ
Slide 10
Slide 10 text
KVC Collection Operators
[email protected]
ԋࢉͰ༻͢Δ ྻू߹ͷ KeyPath ԋࢉࢠ ԋࢉͰ༻͢Δ (ίϨΫγϣϯͷ ཁૉͷ)ϓϩύςΟ ͷ KeyPath ԋࢉࢠΛͬͨ KeyPath ͷॻࣜ
Slide 11
Slide 11 text
KVC Collection Operators ྫ͑, Qiita ͷΫϥΠΞϯτΞϓϦͰ User @property NSArray *items; Item @property NSUInteger stockCount;
Slide 12
Slide 12 text
KVC Collection Operators
[email protected]
͜ͷͱ͖, user ʹର͢ΔҎԼͷ KeyPath user.items ͷ ֤ཁૉ͔ΒऔΓग़ͨ͠ stockCount ͷฏۉ Λද͢ (NSNumber)
Slide 13
Slide 13 text
KVC Collection Operators • 3छྨͷԋࢉࢠ • Simple Collection Operators (୯७ܕίϨΫγϣϯԋࢉࢠ) • Object Operators (ΦϒδΣΫτԋࢉࢠ) • Array and Set Operators (ྻɾू߹ԋࢉࢠ)
Slide 14
Slide 14 text
Simple Collection Operators
Slide 15
Slide 15 text
@interface Fruit : NSObject ! @property NSString *name; @property double price; @property NSDate *boughtAt; ! @end
Slide 16
Slide 16 text
NSArray *basket = @[ apple, banana, orange, grape ]; price boughtAt Apple 100 2014/04/08 Banana 120 2014/03/18 Orange 200 2014/03/27 Grape 300 2014/04/14
Slide 17
Slide 17 text
Simple Collection Operators @count [basket valueForKeyPath:@“@count”]; ! => @(4) • ίϨΫγϣϯͷཁૉΛฦ͢ (NSNumber) • ԋࢉࢠӈଆͷ KeyPath ແࢹ͞ΕΔ
Slide 18
Slide 18 text
Simple Collection Operators @sum [basket valueForKeyPath:@“@sum.price”]; ! => @(720) • ϓϩύςΟͷ߹ܭΛฦ͢ (NSNumber) • Λ double ʹม͔ͯ͠Β߹ܭ͢Δ
Slide 19
Slide 19 text
Simple Collection Operators @avg [basket valueForKeyPath:@“@avg.price”]; ! => @(180) • ϓϩύςΟͷฏۉΛฦ͢ (NSNumber) • Λ double ʹม͔ͯ͠Βฏۉ͢Δ
Slide 20
Slide 20 text
Simple Collection Operators @max [basket valueForKeyPath:@“@max.price”]; ! => @(300) • ϓϩύςΟͷ͕࠷େͷͷΛฦ͢ • Λ compare: Ͱൺֱ͢Δ
Slide 21
Slide 21 text
Simple Collection Operators @max [basket valueForKeyPath:@“@max.boughtAt”]; ! => 2014-04-13 15:00:00 +0000 • ϓϩύςΟͷ͕࠷େͷͷΛฦ͢ • Λ compare: Ͱൺֱ͢Δ
Slide 22
Slide 22 text
Simple Collection Operators @min [basket valueForKeyPath:@“@min.price”]; ! => @(100) • ϓϩύςΟͷ͕࠷খͷͷΛฦ͢ • Λ compare: Ͱൺֱ͢Δ
Slide 23
Slide 23 text
Simple Collection Operators ͜͜·Ͱͷ·ͱΊ • @count • @sum • @avg • @max • @min
Slide 24
Slide 24 text
Object Operators
Slide 25
Slide 25 text
NSArray *basket = @[ apple, apple, banana, orange, grape ];
Slide 26
Slide 26 text
Object Operators @unionOfObjects [basket valueForKeyPath: @“@unionOfObjects.name”]; ! => @[ @“Apple”, @“Apple”, @“Banana”, @“Orange, @“Grape” ] • ϓϩύςΟͷΛ·ͱΊͯ NSArray Ͱฦ͢ • ॏෳ͕͋ͬͯͦͷ··
Slide 27
Slide 27 text
Object Operators @distinctUnionOfObjects [basket valueForKeyPath: @“@distinctUnionOfObjects.name”]; ! => @[ @“Apple”, @“Orange” @“Banana, @“Grape” ] • ϓϩύςΟͷΛ·ͱΊͯ NSArray Ͱฦ͢ • ॏෳΛऔΓআ͘
Slide 28
Slide 28 text
• @unionOfObjects • @distinctUnionOfObjects Object Operators ͜͜·Ͱͷ·ͱΊ
Slide 29
Slide 29 text
Array and Set Operators
Slide 30
Slide 30 text
NSArray *hogeStoreInventory = @[ apple, banana ]; ! NSArray *piyoStoreInventory = @[ apple, orange ]; ! NSArray *inventories = @[ hogeStoreInventory, piyoStoreInventory ];
Slide 31
Slide 31 text
Array and Set Operators @unionOfArrays [inventories valueForKeyPath: @“@unionOfArrays.name”]; ! => @[ @“Apple”, @“Banana” @“Apple, @“Orange” ] • ίϨΫγϣϯʹؚ·ΕΔ֤ྻͷ ϓϩύςΟͷΛ·ͱΊͯ NSArray Ͱฦ͢
Slide 32
Slide 32 text
Array and Set Operators @distinctUnionOfArrays [inventories valueForKeyPath: @“@unionOfArrays.name”]; ! => @[ @“Apple”, @“Orange”, @“Banana” ] • ίϨΫγϣϯʹؚ·ΕΔ֤ྻͷ ϓϩύςΟͷΛ·ͱΊͯ NSArray Ͱฦ͢ • ॏෳΛऔΓআ͘
Slide 33
Slide 33 text
Array and Set Operators @distinctUnionOfSets • @distinctUnionOfArrays ͱಉ༷͕ͩ NSSet ΛؚΉ NSSet ͕ର • ίϨΫγϣϯʹؚ·ΕΔ֤ू߹ͷ ϓϩύςΟͷΛ·ͱΊͯ NSSet Ͱฦ͢ • ॏෳΛऔΓআ͘
Slide 34
Slide 34 text
• @unionOfArrays • @distinctUnionOfArrays • @distinctUnionOfSets ͜͜·Ͱͷ·ͱΊ Array and Set Operators
Slide 35
Slide 35 text
• Collection Operators • valueForKeyPath: Ͱ͑Δԋࢉࢠ • 3छྨͷԋࢉࢠ • Simple Collection Operators • Object Operators • Array and Set Operators Summary
Slide 36
Slide 36 text
• ศརͬΆ͍͚Ͳ, ͏ʁ Summary
Slide 37
Slide 37 text
• Cocoa Bindings Ͱେ׆༂ʂ Summary
Slide 38
Slide 38 text
Thanks! • ຊͷαϯϓϧίʔυ • http://github.com/questbeat/ KVCCollectionOperatorsExample • ࢀߟ • ΩʔίʔσΟϯάϓϩάϥϛϯάΨΠυ https://developer.apple.com/jp/devcenter/ios/ library/documentation/KeyValueCoding.pdf • KVC Collection Operators - NSHipster http://nshipster.com/kvc-collection-operators/