Objective-C 数组索引换行
Objective-C Array Index Wrap
我想知道是否可以在 Objective-C
中包装一个数组
示例:
我有一个名为 characters
的数组,其中包含字母表:
abcdefghijklmnopqrstuvwxyz
作为字母表,它只包含 26
个字符。
我希望能够得到 say 30
的 objectAtIndex
,但是它 returns beyond bounds
(可以理解)。
NSString *letter = [characters objectAtIndex:30];
我想要环绕的数组。例如,30
的 objectAtIndex
到 return d
,第 4 个字符,因为它从最后一个字符换行到第一个字符。
这是我的代码中的特定行:
NSString *encoded = [characters objectAtIndex:[characters indexOfObject:chars] + keyNumber % [characters count]];
变量会根据其他实例而变化,因此 objectAtIndex
会有所不同。
非常感谢您抽出宝贵时间。有任何疑问请询问。
詹姆斯中午。
包装通常使用模运算符完成:
NSString *letter = characters[index % 26];
// ^
不过可能更好:
NSString *characters = @"abcdefghijklmnopqrstuvwxyz";
unichar letter = [characters characterAtIndex:index % 26];
您可以为 NSArray
创建一个类别并为 objectAtIndex:
添加您自己的方法,该方法采用索引并找到数组长度的模数,然后 returns 对象在那个指数。每当给定索引大于数组长度或数组长度为 0 时添加日志也会有帮助。
但是,我建议在该类别中创建一个单独的方法,仅用于查找包装索引并将其称为 objectAtWrappedIndex:
。
你只需要一对括号:
[characters objectAtIndex:([characters indexOfObject:chars] + keyNumber) % characters.count];
我想知道是否可以在 Objective-C
中包装一个数组示例:
我有一个名为 characters
的数组,其中包含字母表:
abcdefghijklmnopqrstuvwxyz
作为字母表,它只包含 26
个字符。
我希望能够得到 say 30
的 objectAtIndex
,但是它 returns beyond bounds
(可以理解)。
NSString *letter = [characters objectAtIndex:30];
我想要环绕的数组。例如,30
的 objectAtIndex
到 return d
,第 4 个字符,因为它从最后一个字符换行到第一个字符。
这是我的代码中的特定行:
NSString *encoded = [characters objectAtIndex:[characters indexOfObject:chars] + keyNumber % [characters count]];
变量会根据其他实例而变化,因此 objectAtIndex
会有所不同。
非常感谢您抽出宝贵时间。有任何疑问请询问。
詹姆斯中午。
包装通常使用模运算符完成:
NSString *letter = characters[index % 26];
// ^
不过可能更好:
NSString *characters = @"abcdefghijklmnopqrstuvwxyz";
unichar letter = [characters characterAtIndex:index % 26];
您可以为 NSArray
创建一个类别并为 objectAtIndex:
添加您自己的方法,该方法采用索引并找到数组长度的模数,然后 returns 对象在那个指数。每当给定索引大于数组长度或数组长度为 0 时添加日志也会有帮助。
但是,我建议在该类别中创建一个单独的方法,仅用于查找包装索引并将其称为 objectAtWrappedIndex:
。
你只需要一对括号:
[characters objectAtIndex:([characters indexOfObject:chars] + keyNumber) % characters.count];