2015-04-14 38 views
3

使用J2objc我有一个JavaUtilList:将JavaUtilList转换为NSArray?

var javaArrayList:JavaUtilList = JavaArrayList() 

我想这个列表转换成一个NSArray:

var arr:[String] = // ???? 

我怎么能转换成JavaUtilList一个Objective-C /斯威夫特的NSArray?

回答

1

您可以通过每一个项目使用iterator循环:

static inline NSArray *ArrayWithJavaUtilList(id <JavaUtilList> list) 
{ 
    NSMutableArray *array = [[NSMutableArray alloc] init]; 
    id <JavaUtilIterator> iterator = [list iterator]; 
    while ([iterator hasNext]) { 
     id object = [iterator next]; 
     [array addObject:object]; 
    } 

    return [NSArray arrayWithArray:array]; 
} 
+0

这是我能做到创建的最佳方式一个使用迭代器的新数组? – confile

+0

据我所知,是的。 – Rufel

1

很好的回答,但JRE的集合类也支持快速列举:

+ (NSArray *)nsArrayFromList:(id<JavaUtilList>)list { 
    NSMutableArray *result = [NSMutableArray array]; 
    for (id object in list) { 
    [result addObject:object]; 
    } 
    return result; 
} 
+0

哪个类包含nsArrayFromList? – confile

+0

我得到错误“类型'JavaUtilList'不符合协议'SequenceType'''当我尝试你的循环。 – confile

+1

Swift添加了新的需求j2objc没有实现(因为它没有明确支持Swift)。请参阅http://stackoverflow.com/questions/25563655/type-anyobject-does-not-conform-to-protocol-sequencetype – tball