Cocoa VCDiff 解码器。
使用 Xdelta version 3,一个由 Ably 分叉的 C 语言库,用于使用 VCDIFF/RFC 3284 流进行增量压缩。
@import AblyDeltaCodec;
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];
import AblyDeltaCodec
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)
}
Objective-C
+(BOOL)isDelta:delta;
Swift
class func isDelta(_ delta: Data) -> Bool
参数:
delta
: NSData
/Data
(是一个二进制编码,格式为 vcdiff,如 RFC 3284 中所指定的。)返回值:
返回一个 BOOL
/Boolean
值,指示它是否为有效的增量。
Objective-C
+(NSData *)applyDelta:current previous:previous error:error;
Swift
class func applyDelta(_ current: Data, previous: Data) -> Data (throws)
参数:
current
: NSData
/Data
(是转换源到目标所需信息的二进制编码。它被编码为 vcdiff,如 RFC 3284 中所指定的。)previous
: NSData
/Data
(是要转换为目标的字节组。)error
: NSError
(仅限 Objective-C) (是发生错误时的错误对象。 它是可空的,因此是可选的。)返回值:
返回目标的 NSData
/Data
对象。 它可以返回 nil
。
Objective-C
-(void)setBase:base withId:baseId;
Swift
func setBase(_ base: Data, withId baseId: Data)
参数:
base
: NSData
/Data
(是要转换为目标的字节组。 这可能是一个旧的,缓存的版本。)baseId
: NSString
/String
(是 base 的标识符。)返回值:
不返回任何内容。
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
(是转换源到目标所需信息的二进制编码。它被编码为 vcdiff,如 RFC 3284 中所指定的。)deltaId
: NSString
/String
(是 delta 的标识符。)baseId
: NSString
/String
(是 base 的标识符,用于验证它是否与当前分配的 base 匹配。)error
: NSError
(仅限 Objective-C) (是发生错误时的错误对象。 它是可空的,因此是可选的。)返回值:
返回目标的 NSData
对象。 它可以返回 nil
。
致谢:
delta
将会成为新的 base
。
我们目前同时拥有这两个文件,每个文件都包含自己的构建配置/设置。这意味着一个构建可能成功,而另一个可能失败。 这是必需的,因为 Carthage 和 Cocoapods 使用 Xcodeproj
,而 SPM 使用 Package.swift
。
对于每个版本,需要完成以下操作
AblyDeltaCodec.podspec
和 Xcode 项目中更新版本号。提交此更改。github_changelog_generator
以自动更新 CHANGELOG。 这可能需要一些人工干预,包括命令的运行方式和变更日志文件的修改方式。 您的结果可能会有所不同github_changelog_generator -u ably -p ably-cocoa --since-tag 1.2.5 --output delta.md
--output delta.md
将 --since-tag
之后所做的更改写入一个新文件delta.md
)的内容插入到 CHANGELOG.md
的顶部,更改“Unreleased”标题并链接到当前版本号HEAD
git add CHANGELOG.md && git commit -m "Update change log."
git push -u origin release/x.x.x
main
发起一个 pull request,并等待审查者的批准swift build
或 open Package.swift
并使用 Xcode 构建库。 这确保了此库将为使用 Swift Package Manager 的应用程序构建。open DeltaCodec.xcodeproj
并使用 Xcode 构建库。 这确保了该库将为使用 Carthage 的应用程序构建。pod lib lint
来验证 Podspec 并确保该库将为 Cocoapods 构建。xdelta3
子模块相关的警告。 我们运行 pod lib lint --allow-warnings
代替。main
分支,或者如果它们很复杂或可能需要审查,则考虑提出新的 PR。git tag x.x.x
为此版本号创建一个标签git push origin x.x.x
推送标签pod trunk push AblyDeltaCodec.podspec --allow-warnings
发布 CocoaPods 的更新。 有关此命令的详细信息,以及有关添加其他贡献者作为维护者的说明,请参见 Getting setup with Trunk,位于 CocoaPods Guides 中