DeltaCodec
Cocoa VCDiff 解码器。
使用 Xdelta 版本 3,这是一个使用 VCDIFF/RFC 3284 流的 delta 压缩的 C 库。
Objective-C 示例
@import DeltaCodec;
NSError *error;
ARTDeltaCodec *codec = [[ARTDeltaCodec alloc] init];
[codec setBase:baseData withId:@"m1"];
NSData *outputData = [codec applyDelta:deltaData deltaId:@"m2" baseId:@"m1" error:&error];
// Output data is an utf-8 string:
NSString *output = [[NSString alloc] initWithData:outputData encoding:NSUTF8StringEncoding];
Swift 示例
import DeltaCodec
let codec = ARTDeltaCodec()
codec.setBase(baseData, withId: "m1")
do {
let outputData = try codec.applyDelta(deltaData, deltaId: "m2", baseId: "m1")
// Output data is an utf-8 string:
let output = String(data: outputData, encoding: .utf8)
}
catch {
print(error)
}
API 参考
无状态
类 isDelta
声明
Objective-C
+(BOOL)isDelta:delta;
Swift
class func isDelta(_ delta: Data) -> Bool
参数:
delta
:NSData
/Data
(是一个二进制编码为 vcdiff,如RFC 3284中规定的。)
返回值:
返回一个 BOOL
/Boolean
值,表示它是否是有效的差分。
类 applyDelta
声明
Objective-C
+(NSData *)applyDelta:current previous:previous error:error;
Swift
class func applyDelta(_ current: Data, previous: Data) -> Data (throws)
参数:
current
:NSData
/Data
(是需要转换为目标的二进制编码信息。它按照RFC 3284编解码为vcdiff。)previous
:NSData
/Data
(需要转换成目标的字节数组。)error
:NSError
(Objective-C仅适用) (当出错时的错误对象。它可为空,所以是可选的。)
返回值:
返回一个目标的 NSData
/Data
对象。它可能返回 nil
。
状态保存
setBase
声明
Objective-C
-(void)setBase:base withId:baseId;
Swift
func setBase(_ base: Data, withId baseId: Data)
参数:
base
:NSData
/Data
(是要转换为目标的数据簇。这可能是旧版本、缓存版本。)baseId
:NSString
/String
(是基的标识符。)
返回值:
不返回任何内容。
applyDelta
声明
Objective-C
-(NSData *)applyDelta:delta deltaId:deltaId baseId:baseId error:error;
Swift
func applyDelta(_ delta: Data, deltaId deltaId: String, baseId baseId: String) -> Data (throws)
参数:
delta
:NSData
/Data
(是需要转换源到目标的信息的二进制编码。它以 RFC 3284 中指定的 vcdiff 进行编码。)deltaId
:NSString
/String
(是 delta 的标识符。)baseId
NSString
/String
(是用于验证是否与当前指定的基匹配的基的标识符。)error
:NSError
(Objective-C仅适用) (当出错时的错误对象。它可为空,所以是可选的。)
返回值:
返回目标的一个 NSData
对象。它可能返回 nil
。
致谢:
delta
将成为新的 base
。