func returnTotalRouteX()->[Int]{ println("call returnTotalRouteX") var routeX = [Int]() for item in totalRoute{ routeX.append(nodeData[item]!.xPosition) } println(routeX) return routeX } 在OC中调用函数, GetRoute *h = [[GetRoute alloc] init]; if (h.returnTotalRouteX.count == 0) { NSLog(@"it is empty"); } else{ NSLog(@"%@",h.returnTotalRouteX); NSLog(@"%@",h.returnTotalRouteX[0]); NSLog(@"it is not empty"); } NSLog(@”%@”,h.returnTotalRouteX[0]);这行只有用%@才能正确输出,若是用%d则输出不正确。我想要获取该int型的数组元素,该如何做呢? |
|
60分 |
应该是正常的。
Swift 是支持强类型的,在上面swift 中的方法返回的是一个Int类型的数组。而在oc中,数组是使用NSArray 来存储的。 在oc中通过下标来访问一个NSArray数组中的元素返回的是id类型,所以要使用%@来输出元素的值,而不是%d 如果你非要使用%d的话,就需要做一个类型转换了 id val = h.returnTotalRouteX[0]; int intVal = [val intValue]; NSLog(@"value is :%d",intVal); |