How to use objectAtIndex in swift

* IDE: XCODE 6 beta3
* Language: Swift + Goal C

Here is my code.

Target Code C

@implementation arrayTest { NSMutableArray *mutableArray; } - (id) init { self = [super init]; if(self) { mutableArray = [[NSMutableArray alloc] init]; } return self; } - (NSMutableArray *) getArray { ... return mutableArray; // mutableArray = {2, 5, 10} } 

Swift code

 var target = arrayTest.getArray() // target = {2, 5, 10} for index in 1...10 { for targetIndex in 1...target.count { // target.count = 3 if index == target.objectAtIndex(targetIndex-1) as Int { println("GET") } else { println(index) } } } 

I want to get the following result:

 1 GET 3 4 GET 6 7 8 9 GET 

But my code gives me an error

 libswift_stdlib_core.dylib`swift_dynamicCastObjCClassUnconditional: 0x107e385b0: pushq %rbp ...(skip) 0x107e385e4: leaq 0xa167(%rip), %rax ; "Swift dynamic cast failed" 0x107e385eb: movq %rax, 0x6e9de(%rip) ; gCRAnnotations + 8 0x107e385f2: int3 0x107e385f3: nopw %cs:(%rax,%rax) 

.

 if index == target.objectAtIndex(targetIndex-1) as Int { // target.objectAtIndex(0) = 2 -> but type is not integer 

I think this code is incomplete. But I can not find a solution.
Help me TT

+6
source share
2 answers

In Obj-C, objectAtIndex: 2 looks like this:

 [self.myArray ObjectAtIndex:2] 

In Swift, objectAtIndex: 2 looks like this:

 self.myArray[2] 
+17
source

I modeled your array using:

 NSArray * someArray() { return @[@2, @5, @10]; } 

And your code compiles and runs seamlessly in Xcode 6 Beta 3

However, your code does not do what you want, because it prints 10 * target.count numbers

That's right, it should be

 let target = arrayTest.getArray() as [Int] for index in 1...10 { var found = false for targetIndex in indices(target) { if index == target[targetIndex] { found = true break } } if (found) { println("GET") } else { println(index) } } 

or even better

 let target = arrayTest.getArray() as [Int] for index in 1...10 { if (contains(target, index)) { println("GET") } else { println(index) } } 
+1
source

Source: https://habr.com/ru/post/972080/


All Articles