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> 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

Reply via email to