2015-04-14 36 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