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> 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 https://lists.swift.org/mailman/listinfo/swift-users