使用 J2objc 我有一个 JavaUtilList:
var javaArrayList:JavaUtilList = JavaArrayList()
我想将此列表转换为 NSArray:
var arr:[String] = // ????
如何将 JavaUtilList 转换为 Objective-C/Swift NSArray?
使用 J2objc 我有一个 JavaUtilList:
var javaArrayList:JavaUtilList = JavaArrayList()
我想将此列表转换为 NSArray:
var arr:[String] = // ????
如何将 JavaUtilList 转换为 Objective-C/Swift NSArray?
很好的答案,但 JRE 集合类也支持快速枚举:
+ (NSArray *)nsArrayFromList:(id<JavaUtilList>)list {
NSMutableArray *result = [NSMutableArray array];
for (id object in list) {
[result addObject:object];
}
return result;
}
您可以使用 aniterator
来循环浏览每个项目:
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];
}
如果您使用 J2OBJC 库来构建项目。然后我们可以更好地使用 IOSObjectArray 而不是 NSArray,因为它通过使用 toArray 函数直接给出 IOSObjectArray。
**Swift version 5.0**
**Obtaining object from j2objc generated class as JavaUtilArrayList**
let a = ObjcgeneratedClassWithj2Objc().methodA(with: fileURL, withLong: 1234556679, withLong: 0)
**Printing JavaUtilArrayList**
print("\(String(describing: a))")
**Creating IOSObjectArray from JavaUtilArrayList**
let array : IOSObjectArray = (a?.toArray())!
**Iterating through array length**
for number in 0..<(array.length()-1) {
**Getting index-wise models**
let ar: ClassA = (array.object(at: UInt(number)) ?? 0) as! ClassA
**Populating another inside IOSObjectArray**
ar.getGpsData()?.toArray()
}
很快我将在 github 上发布一个项目,并尝试分享一些 JavaUtilArrayList 到 NSArray 转换的代码,并与 j2objc 人分享