<html><head><meta http-equiv="Content-Type" content="text/html charset=utf-8"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class="">Thanks for the help. I'm still trying to figure out how Swift works, particularly what the error messages mean. This has been driving me a little nuts trying to figure out what is wrong via sometimes cryptic errors. Also, it seems like getting generic programming working in Swift is more difficult than I'm used to (even than C++!) so this answer helps figure out how the compiler works.<div class=""><div class=""><br class=""></div><div class="">Doug Hill</div><div class=""><br class=""><div class=""><br class=""><div><blockquote type="cite" class=""><div class="">On Jan 23, 2017, at 7:04 PM, Zhao Xin <<a href="mailto:owenzx@gmail.com" class="">owenzx@gmail.com</a>> wrote:</div><br class="Apple-interchange-newline"><div class=""><div dir="ltr" class=""><div class="gmail_default" style="font-family:georgia,serif">It seems to me that you didn't initialize your `<span style="font-size:12.800000190734863px;font-family:arial,sans-serif" class="">myArray` before you casted it. That caused the problem.</span></div><div class="gmail_default" style="font-family:georgia,serif"><span style="font-size:12.800000190734863px;font-family:arial,sans-serif" class=""><br class=""></span></div><div class="gmail_default"><span style="font-size:12.800000190734863px" class="">Zhaoxin</span></div></div><div class="gmail_extra"><br class=""><div class="gmail_quote">On Tue, Jan 24, 2017 at 9:34 AM, Jon Shier via swift-users <span dir="ltr" class=""><<a href="mailto:swift-users@swift.org" target="_blank" class="">swift-users@swift.org</a>></span> wrote:<br class=""><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div style="word-wrap:break-word" class="">enumerateObjects(options:<wbr class="">using:) exists on NSArray in Swift. And I was able to create your generic class just fine:<div class=""><br class=""></div><div class="">class Test<T> {<br class=""> var array: [T] = []<br class=""> <br class=""> init() {<br class=""> var temp = array as NSArray<br class=""> }<br class="">}</div><div class=""><br class=""></div><div class="">I’m not sure what the canonical parallel array enumeration would be, but you can do it using concurrentPerform:</div><div class=""><br class=""></div><div class="">let array = [“one”, “two”]</div><div class="">DispatchQueue.<wbr class="">concurrentPerform(iterations: <wbr class="">array.count) { index in<br class=""> print(array[index])<br class="">}</div><div class=""><br class=""></div><div class=""><br class=""><div class=""><blockquote type="cite" class=""><div class=""><div class="h5"><div class="">On Jan 23, 2017, at 8:20 PM, Doug Hill via swift-users <<a href="mailto:swift-users@swift.org" target="_blank" class="">swift-users@swift.org</a>> wrote:</div><br class="m_3717231692475968104Apple-interchange-newline"></div></div><div class=""><div class=""><div class="h5"><div style="word-wrap:break-word" class=""><div class="">I'm trying to accomplish the equivalent functionality of -[NSArray enumerateUsingObjects:…] in Swift. Doing a Googles search, I see that one would need to call the equivalent method on the bridged NSArray version of your Swift array:</div><div class=""><br class=""></div><div class="">var myNSArray : NSArray = mySwiftArray as NSArray</div><div class=""><br class=""></div><div class="">Here's the problem I'm running into; I have the following class:</div><div class=""><br class=""></div><div class=""><div class="">class Tester<typeA></div><div class="">{</div><div class=""><span class="m_3717231692475968104Apple-tab-span" style="white-space:pre-wrap">        </span>var myArray : [typeA]</div><div class=""><br class=""></div><div class=""><span class="m_3717231692475968104Apple-tab-span" style="white-space:pre-wrap">        </span>init()</div><div class=""><span class="m_3717231692475968104Apple-tab-span" style="white-space:pre-wrap">        </span>{</div><div class=""><span class="m_3717231692475968104Apple-tab-span" style="white-space:pre-wrap">                </span>var temp = self. myArray as NSArray</div><div class=""><span class="m_3717231692475968104Apple-tab-span" style="white-space:pre-wrap">        </span>}</div><div class="">}</div></div><div class=""><br class=""></div><div class="">Which produces a compiler error:</div><div class=""><br class=""></div><div class="">'<span style="font-family:Menlo;font-size:11px" class="">cannot convert value of type '[typeA]' to type 'NSArray' in coercion'</span></div><div class=""><br class=""></div><div class="">Ok, this makes some sense since I'm guessing NSArray requires each element to to be an NSObject but this array type Array<typeA> could be a non-NSObject.</div><div class=""><br class=""></div><div class="">However, this makes my code harder to write since I now have to make sure any array has element type NSObject to use enumerateUsingObjects. Not something I can either guarantee or even desire.</div><div class=""><br class=""></div><div class="">The reason I like enumerateUsingObjects is that it supports a functional style of programming and is better at creating work items for each object by dispatching each array item on multiple cores/processors/threads for me. Writing this method myself would require figuring out to pass an object to a dispatch invocation. But looking through the swift API's, I don't see any GCD method for passing an object to dispatch_sync/async. I see versions of these methods that takes a context parameter but then takes a C function instead of a block, so not very Swift-like and potentially unsafe.</div><div class=""><br class=""></div><div class="">Does this mean enumerateUsingObjects is generally not all that useful in Swift? Are there better alternatives? Any ideas on how best to handle this situation would be appreciated.</div><div class=""><br class=""></div><div class="">Doug Hill</div></div></div></div></div></blockquote></div></div></div></blockquote></div></div></div></blockquote></div><br class=""></div></div></div></body></html>