Objective c 已将无法识别的iOS选择器发送到实例0x45e8
下面是我试图加密数据的代码 输入/调用我的加密方法:Objective c 已将无法识别的iOS选择器发送到实例0x45e8,objective-c,ios,unrecognized-selector,Objective C,Ios,Unrecognized Selector,下面是我试图加密数据的代码 输入/调用我的加密方法: [self myED:@"wcc123" :@"hahaha" :@"yyyy"]; - (NSData*) myED:(NSData*)data :(NSData*) key :(NSData*)iv{ @try { // Try something NSLog( @"Original String: %@", data ); size_t bufferSize = [data
[self myED:@"wcc123" :@"hahaha" :@"yyyy"];
- (NSData*) myED:(NSData*)data :(NSData*) key :(NSData*)iv{
@try {
// Try something
NSLog( @"Original String: %@", data );
size_t bufferSize = [data length]*2;
void *buffer = malloc(bufferSize);
size_t encryptedSize = 0;
CCCryptorStatus cryptStatus = CCCrypt(kCCEncrypt, kCCAlgorithmAES128, kCCOptionPKCS7Padding,
[key bytes], [key length], [iv bytes], [data bytes], [data length],
buffer, bufferSize, &encryptedSize);
}
@catch (NSException * e) {
NSLog(@"Exception: %@", e);
}
@finally {
// Added to show finally works as well
}
return nil;
}
但是,当尝试运行此代码时,它会提示我以下异常
2012-07-03 16:52:44.776 wccTest[930:f803]异常:
-[\uu NSCFConstantString字节]:
有人能在这方面提供帮助/建议吗?您的方法需要
NSData
,您正在传递NSString
s.您的方法需要NSData
,您正在传递NSString
s.<
[self myED:@"wcc123" :@"hahaha" :@"yyyy"];
试着打电话
[self myED:[@"wcc123" dataUsingEncoding:NSUTF8StringEncoding] :[@"hahaha" dataUsingEncoding:NSUTF8StringEncoding] :[@"yyyy" dataUsingEncoding:NSUTF8StringEncoding]];
而不是
[self myED:@"wcc123" :@"hahaha" :@"yyyy"];
试着打电话
[self myED:[@"wcc123" dataUsingEncoding:NSUTF8StringEncoding] :[@"hahaha" dataUsingEncoding:NSUTF8StringEncoding] :[@"yyyy" dataUsingEncoding:NSUTF8StringEncoding]];
在@borrrden评论之后,我还将为您的方法提供一个自我解释的名称。例如:
- (NSData*)encryptEDData:(NSData*)data withKey:(NSData*)key initVector:(NSData*)iv {
// same as before
}
因此,此方法的选择器
将是encryptEDData:withKey:initVector:
您可以像这样调用该方法:
NSData* edData = //...
NSData* keyData = //...
NSData* ivData = //...
[self encryptEDData:edData withKey:keyData initVector:ivData];
此外,我将在方法中执行NSString
到NSData
的转换,让它接受字符串。我认为这样可以更好地理解该方法的目标
希望这能有所帮助。在@borrrden评论之后,我还将为您的方法提供一个自我解释的名称。例如:
- (NSData*)encryptEDData:(NSData*)data withKey:(NSData*)key initVector:(NSData*)iv {
// same as before
}
因此,此方法的选择器
将是encryptEDData:withKey:initVector:
您可以像这样调用该方法:
NSData* edData = //...
NSData* keyData = //...
NSData* ivData = //...
[self encryptEDData:edData withKey:keyData initVector:ivData];
此外,我将在方法中执行NSString
到NSData
的转换,让它接受字符串。我认为这样可以更好地理解该方法的目标
希望这能有所帮助。如果您不希望与您一起工作的任何开发人员对您大喊大叫,请为您的参数命名。如果您不希望与您一起工作的任何开发人员对您大喊大叫,请为您的参数命名。