teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

1

Objective-C と swift のコードを双方載せました

2015/04/03 03:18

投稿

harima
harima

スコア17

title CHANGED
File without changes
body CHANGED
@@ -1,10 +1,35 @@
1
1
  某S社の本を見ながら、アドレス帳を作っているのですが、並び方があいうえお順ではなく、ばらばらなのでソートをしたいのですが、分かりません。すみませんがどなたかお知恵を拝借できないでしょうか?
2
2
 
3
- let records : NSArray = ABAddressBookCopyArrayOfAllPeople(book).takenUnretainedValue()
4
- var peopleMutable : CFMutableArrayRef = CFArrayCreateMutableCopy(kCFAllocatorDeFault,
5
- CFArrayGetCount(records), records)
3
+ Objective-Cの場合は下記方法で名前でソートできていたのですが、
6
- CFArraySortValues(....)
7
4
 
5
+ ABAddressBookRef book = ABAddressBookCreateWithOptions(NULL, NULL);
6
+
7
+ CFArrayRef records = ABAddressBookCopyArrayOfAllPeople(book);
8
+
9
+ CFMutableArrayRef peopleMutable = CFArrayCreateMutableCopy(kCFAllocatorDefault,
10
+ CFArrayGetCount(records), records);
11
+
12
+ CFArraySortValues(peopleMutable, CFRangeMake(0, CFArrayGetCount(peopleMutable)),
13
+ (CFComparatorFunction)ABPersonComparePeopleByName, (void*)ABPersonGetSortOrdering());
14
+
15
+
16
+
17
+ 同様にswiftで下記のように記述するとエラーが出ます。
18
+
19
+ var book : ABAddressBook = ABAddressBookCreateWithOptions(nil, nil).takeUnretainedValue()
20
+
21
+ let records : NSArray = ABAddressBookCopyArrayOfAllPeople(book).takeUnretainedValue()
22
+
23
+ var peopleMutable : CFMutableArray = CFArrayCreateMutableCopy(kCFAllocatorDefault,
24
+ CFArrayGetCount(records), records)
25
+
26
+ let loc : CFIndex = 0
27
+
28
+ var len : CFIndex = CFArrayGetCount(peopleMutable)
29
+
30
+ CFArraySortValues(peopleMutable, CFRangeMake(loc, len),
31
+ CFComparatorFunction : ABPersonComparePeopleByName , ABPersonGetSortOrdering() )
32
+
8
- とすれば、良いと思うのですが、CFArraySortValuesの中が分かりません。
33
+ CFArraySortValuesの記述が悪は分かっているのですが、どこを直したら良いか分かりません。
9
- 一度Object-Cで作ったときはできたのですが、少し変わっているようなので頭を抱えています。
34
+
10
- 宜しお願致します
35
+ どなたかご教授ださい。