2014-06-10 13 views
10

Về cơ bản tôi đang sử dụng khung AssetsLibrary trong Swift, làm thế nào tôi có thể sửa đổi giá trị của con trỏ dừng thành NO/False/0 (Tôi thậm chí không biết giá trị nó nên ngoại trừ)?Làm thế nào để thiết lập CMutablePointer <ObjCBool> thành false trong Swift?

self.library.enumerateGroupsWithTypes(ALAssetsGroupType(ALAssetsGroupSavedPhotos), usingBlock: {(group: ALAssetsGroup!, stop: CMutablePointer<ObjCBool>) in 

}, 
failureBlock: {(error: NSError!) in 

}) 

Tôi có thể truy cập vào giá trị và sửa đổi giá trị đó bằng unsafePointer nhưng dường như tôi không thể viết chính xác.

+0

BTW, bạn đặt giá trị này thành 'true' khi bạn muốn dừng, không phải' false'. Nếu bạn muốn nó tiếp tục, bạn chỉ cần để nó một mình. – Rob

Trả lời

18

Đây là tương đương với *stop = YES;:

stop.withUnsafePointer { $0.memory = true } 

Để làm cho nó gọn gàng hơn, bạn có thể làm những việc như:

operator infix <- {} 

@infix func <- <T>(ptr: CMutablePointer<T>, value: T) { 
    ptr.withUnsafePointer { $0.memory = value } 
} 

và sau đó dòng trên chỉ đơn giản là trở thành này:

stop <- true 

Không chắc chắn nếu đó là kiểu được đề xuất, mặc dù ...

(. Bạn có thể chọn các nhân vật từ / = - + * % < > ! & |^. ~ để tạo custom operators)

+2

Haha, tôi thích nhìn thấy những gì mọi người đến với quá tải nhà điều hành ... đây là một tuyệt vời! – Jack

+0

Tôi thích khái niệm này. – holex

+0

Downvoter, chăm sóc bình luận? –

8

Tính đến Xcode 6 beta 4, bây giờ bạn có thể làm:

stop.memory = true 

Hoặc, như holex noted, bạn có thể:

stop.initialize(true) 
+0

cảm ơn bạn đã tham khảo. :) – holex

+0

Nếu bạn muốn đăng câu trả lời của riêng bạn ở đây, tôi rất vui khi xóa bài đăng của tôi. Tôi muốn thấy bạn có được những điểm danh tiếng! – Rob

+1

cảm ơn bạn, điều đó rất hào phóng từ bạn! Tôi không theo đuổi các khoản tín dụng, tôi rất vui khi được giúp đỡ. :) chỉ để cho vui, bạn biết đấy ... :) – holex

Các vấn đề liên quan