作者:钟颖Cyan
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
1. 扫码
在 iOS 上面实现扫码简直不要太简单,包括二维码、条形码在内的几十种码直接用AVFoundation框架就处理完了,前后代码一共十几行。
2. 二维码 Encode & Decode
一个字符串生成二维码,用CoreImage里面的 filter 就可以了:
+(CIImage*)CIImageWithQRCode:(NSString*)qrcode{NSData*data=[qrcodedataUsingEncoding:NSUTF8StringEncoding];CIFilter*filter=[CIFilterfilterWithName:@"CIQRCodeGenerator"];[filtersetValue:dataforKey:@"inputMessage"];[filtersetValue:@"M"forKey:@"inputCorrectionLevel"];returnfilter.outputImage;}
反过来也是一样容易,使用CIDetector:
-(NSString*)decodeQRCode{CIDetector*detector=[CIDetectordetectorOfType:CIDetectorTypeQRCodecontext:niloptions:@{CIDetectorAccuracy:CIDetectorAccuracyHigh}];NSArray*features=[detectorfeaturesInImage:[[CIImagealloc]initWithImage:self]];NSMutableString*result=[NSMutableStringstring];for(CIQRCodeFeature*featureinfeatures){[resultappendString:feature.messageString];}returnresult;}
Key-Value-Coding绝对是 iOS 里面极其有意思的一个东西,例如说一个 NSArray 可以通过这样的方式返回一个不重复的 NSArray:
NSArray*array=@[@1,@2,@1,@2,@3];NSArray*unique=[arrayvalueForKeyPath:@"@distinctUnionOfObjects.self"];
4. 自觉的 boolValue 方法
一直以来我都以为 boolValue 只能处理只包含数字的 NSString,后来我发现下面这些都是 NO:
@"0".boolValue
@"false".boolValue
@"FaLsE".boolValue
@"NO".boolValue
@"No".boolValue
而这些都是 YES:
@"1".boolValue
@"true".boolValue
@"TruE".boolValue
@"YES".boolValue
@"YeS".boolValue
@"T".boolValue
作者:钟颖Cyan
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。