Ah, thanks for the info about Swift syntax. I guess my C++ background trips me up on some of this Swift syntax.
Doug Hill > On Jan 25, 2017, at 11:32 PM, Pierre Monod-Broca <pierremonodbr...@gmail.com> > wrote: > > You should try: > ``` > class Test<T: NSObject> { > let array: [T] = [] > . . . > ``` > > Because when you declare `class Test<NSObject>`, NSObject is the generic > parameter, no longer the class. > > Pierre > > Le 26 janv. 2017 à 02:45, Doug Hill via swift-users <swift-users@swift.org > <mailto:swift-users@swift.org>> a écrit : > >> Unfortunately, this is for a work-related project, not just research, so I'm >> looking for solutions to specific problems that I'll need for my work. >> >> I guess I'll have to file this one away as broken in Swift 2.x >> >> Doug >> >>> On Jan 25, 2017, at 5:28 PM, Zhao Xin <owe...@gmail.com >>> <mailto:owe...@gmail.com>> wrote: >>> >>> I think in swift 2.x, the `Array` is not mature enough to do a lot of >>> things. Besides, `NSArray` can also hold non-NSObjects like Int, for >>> example. >>> >>> I suggest you to use the latest Swift to do your research. As in Swift, >>> everything moves fast and changes a lot. In the latest Xcode beta, all >>> swift 2.x are abandoned. The latest stable swift is 3.0.2 and 2.3. The next >>> release will be swift 3.1. >>> >>> Zhaoxin >>> >>> On Thu, Jan 26, 2017 at 9:17 AM, Doug Hill <swiftus...@breaqz.com >>> <mailto:swiftus...@breaqz.com>> wrote: >>> I'm guessing that conversion of a Swift array to an NSArray can only happen >>> if the Swift array holds NSObjects. So, I tried changing the type parameter >>> of my class to NSObject: >>> >>> class Test<NSObject> >>> { >>> let array = [NSObject]() >>> >>> init() { >>> let temp = self.array as NSArray >>> } >>> } >>> >>> error: cannot convert value of type '[NSObject]' to type 'NSArray' in >>> coercion >>> var temp = self.array as NSArray >>> ~~~~~^~~~~ >>> >>> However, if I change the type parameter to something else it compiles with >>> no problem. >>> >>> class Test<T> >>> { >>> let array = [NSObject]() >>> >>> init() { >>> let temp = self.array as NSArray >>> } >>> } >>> >>> >>> I guess this is interesting, but I still can't create an array with items >>> whose type is the type parameter of the class and then convert to NSArray. >>> >>> Doug Hill >>> >>> >>>> On Jan 25, 2017, at 10:49 AM, Doug Hill <swiftus...@breaqz.com >>>> <mailto:swiftus...@breaqz.com>> wrote: >>>> >>>> OK, I just tried testing this code in my app and a Swift playground. I >>>> also tried a variation on the initializer just for the heck of it. I get >>>> the following error: >>>> >>>> class Test<T> >>>> { >>>> var array:[T] = [] >>>> var array2 = [T]() >>>> >>>> init() { >>>> var temp = self.array as NSArray >>>> var temp2 = self.array2 as NSArray >>>> } >>>> } >>>> >>>> error: cannot convert value of type '[T]' to type 'NSArray' in coercion >>>> var temp = self.array as NSArray >>>> ~~~~~^ >>>> error: cannot convert value of type '[T]' to type 'NSArray' in coercion >>>> var temp2 = self.array2 as NSArray >>>> ~~~~~^ >>>> >>>> Are there restrictions on what can be converted to NSArray? >>>> >>>> Doug Hill >>>> >>>>> On Jan 25, 2017, at 9:24 AM, Doug Hill via swift-users >>>>> <swift-users@swift.org <mailto:swift-users@swift.org>> wrote: >>>>> >>>>> 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. >>>>> >>>>> Doug Hill >>>>> >>>>> >>>>>> On Jan 23, 2017, at 7:04 PM, Zhao Xin <owe...@gmail.com >>>>>> <mailto:owe...@gmail.com>> wrote: >>>>>> >>>>>> It seems to me that you didn't initialize your `myArray` before you >>>>>> casted it. That caused the problem. >>>>>> >>>>>> Zhaoxin >>>>>> >>>>>> On Tue, Jan 24, 2017 at 9:34 AM, Jon Shier via swift-users >>>>>> <swift-users@swift.org <mailto:swift-users@swift.org>> wrote: >>>>>> enumerateObjects(options:using:) exists on NSArray in Swift. And I was >>>>>> able to create your generic class just fine: >>>>>> >>>>>> class Test<T> { >>>>>> var array: [T] = [] >>>>>> >>>>>> init() { >>>>>> var temp = array as NSArray >>>>>> } >>>>>> } >>> >> >> _______________________________________________ >> swift-users mailing list >> swift-users@swift.org <mailto:swift-users@swift.org> >> https://lists.swift.org/mailman/listinfo/swift-users >> <https://lists.swift.org/mailman/listinfo/swift-users>
_______________________________________________ swift-users mailing list swift-users@swift.org https://lists.swift.org/mailman/listinfo/swift-users