Swift framework for zipping and unzipping files.

Overview

Zip - Zip and unzip files in Swift

Build Status Version Carthage compatible SPM supported

Zip

A Swift framework for zipping and unzipping files. Simple and quick to use. Built on top of minizip.

Usage

Import Zip at the top of the Swift file.

import Zip

Quick functions

The easiest way to use Zip is through quick functions. Both take local file paths as NSURLs, throw if an error is encountered and return an NSURL to the destination if successful.

do {
    let filePath = Bundle.main.url(forResource: "file", withExtension: "zip")!
    let unzipDirectory = try Zip.quickUnzipFile(filePath) // Unzip
    let zipFilePath = try Zip.quickZipFiles([filePath], fileName: "archive") // Zip
}
catch {
  print("Something went wrong")
}

Advanced Zip

For more advanced usage, Zip has functions that let you set custom destination paths, work with password protected zips and use a progress handling closure. These functions throw if there is an error but don't return.

do {
    let filePath = Bundle.main.url(forResource: "file", withExtension: "zip")!
    let documentsDirectory = FileManager.default.urls(for:.documentDirectory, in: .userDomainMask)[0]
    try Zip.unzipFile(filePath, destination: documentsDirectory, overwrite: true, password: "password", progress: { (progress) -> () in
        print(progress)
    }) // Unzip

    let zipFilePath = documentsFolder.appendingPathComponent("archive.zip")
    try Zip.zipFiles([filePath], zipFilePath: zipFilePath, password: "password", progress: { (progress) -> () in
        print(progress)
    }) //Zip

}
catch {
  print("Something went wrong")
}

Custom File Extensions

Zip supports '.zip' and '.cbz' files out of the box. To support additional zip-derivative file extensions:

Zip.addCustomFileExtension("file-extension-here")

[Preferred] Setting up with Swift Package Manager

To use Zip with Swift Package Manager, add it to your package's dependencies:

.package(url: "https://github.com/marmelroy/Zip.git", .upToNextMinor(from: "2.1"))

Setting up with CocoaPods

source 'https://github.com/CocoaPods/Specs.git'
pod 'Zip', '~> 2.1'

Setting up with Carthage

To integrate Zip into your Xcode project using Carthage, specify it in your Cartfile:

github "marmelroy/Zip" ~> 2.1
Comments
  • Missing required module

    Missing required module "minizip"

    I installed Zip using carthfile and when I try to build this framework I get information about missing module "minizip". What do I need to do, to use this framework?

    opened by PiotrStepien 21
  • Error - Missing required module 'minizip'

    Error - Missing required module 'minizip'

    This occurs when the Zip code files are not present. We use carthage to check out and build dependencies, but we don't commit the code / project files into our repo, just the built frameworks. When another dev checks out the project, they get this error. The built framework should be independent of the project / code files.

    opened by gsimmons 14
  • Add Swift Package Manager support

    Add Swift Package Manager support

    Since #118 seems to be dead, I've created a new PR.

    This adds full SPM support. The following changes were necessary:

    • Add Package.swift file
    • Move minizip model map and headers into "include" subdirectory (required by SPM)
    • Work around some issues with not yet implemented APIs in corelibs-foundation (namely file creation and modification attributes and FileManager.urls(for:in:))
    • Refactor test setup to work with SPM
    • Generate LinuxMain files for SPM tests
    • Let travis run tests with SPM
    • Update README
    opened by ffried 13
  • Failed to set permissions to file

    Failed to set permissions to file

    Updated my pet-project to Swift 3.0 and unzipping is totally broken. I download ZIP from my https and store into Documents. Than I unzip it in same path.

    But receive error: Failed to set permissions to file.

    When I commented Set file permissions from current fileInfo block everything works well.

    iOS Simulator 10. Not tested on real device.

    Thanks.

    opened by therabbitwindfall 13
  • Swift3.0 errors when using `pod lib lint mylib.podspec` in our Pod

    Swift3.0 errors when using `pod lib lint mylib.podspec` in our Pod

    In our Pod iOSDFULibrary we have Zip as a dependency, currently using 0.6 with Swift3 support.

    When I try to pod lib lint iOSDFULibrary.podspec while using Xcode 8 , I get those errors, which seem like Xcode is not using Swift3, I'm guessing ? I only have Xcode8 installed, any tips appreciated!

    - ERROR | xcodebuild: Returned an unsuccessful exit code. You can use `--verbose` for more information.
        - WARN  | xcodebuild:  Zip/Zip/QuickZip.swift:24:38: warning: extraneous '_' in parameter: 'path' has no keyword argument name
        - ERROR | xcodebuild:  Zip/Zip/QuickZip.swift:40:63: error: expected type
        - ERROR | xcodebuild:  Zip/Zip/QuickZip.swift:40:63: error: expected ',' separator
        - WARN  | xcodebuild:  Zip/Zip/QuickZip.swift:40:38: warning: extraneous '_' in parameter: 'path' has no keyword argument name
        - ERROR | xcodebuild:  Zip/Zip/QuickZip.swift:41:39: error: expected member name following '.'
        - ERROR | xcodebuild:  Zip/Zip/QuickZip.swift:41:39: error: consecutive statements on a line must be separated by ';'
        - ERROR | xcodebuild:  Zip/Zip/QuickZip.swift:41:39: error: 'default' label can only appear inside a 'switch' statement
        - ERROR | xcodebuild:  Zip/Zip/QuickZip.swift:98:1: error: expected '}' at end of brace statement
        - NOTE  | xcodebuild:  Zip/Zip/QuickZip.swift:40:106: note: to match this opening '{'
        - ERROR | xcodebuild:  Zip/Zip/QuickZip.swift:98:1: error: expected declaration
        - ERROR | xcodebuild:  Zip/Zip/Zip.swift:85:119: error: expected type
        - ERROR | xcodebuild:  Zip/Zip/Zip.swift:85:119: error: expected ',' separator
        - ERROR | xcodebuild:  Zip/Zip/Zip.swift:88:39: error: expected member name following '.'
        - ERROR | xcodebuild:  Zip/Zip/Zip.swift:88:39: error: consecutive statements on a line must be separated by ';'
        - ERROR | xcodebuild:  Zip/Zip/Zip.swift:88:39: error: 'default' label can only appear inside a 'switch' statement
        - ERROR | xcodebuild:  Zip/Zip/Zip.swift:234:146: error: expected type
        - ERROR | xcodebuild:  Zip/Zip/Zip.swift:234:146: error: expected ',' separator
        - ERROR | xcodebuild:  Zip/Zip/Zip.swift:237:39: error: expected member name following '.'
        - ERROR | xcodebuild:  Zip/Zip/Zip.swift:237:39: error: consecutive statements on a line must be separated by ';'
        - ERROR | xcodebuild:  Zip/Zip/Zip.swift:237:39: error: 'default' label can only appear inside a 'switch' statement
        - ERROR | xcodebuild:  Zip/Zip/ZipUtilities.swift:14:35: error: expected member name following '.'
        - ERROR | xcodebuild:  Zip/Zip/ZipUtilities.swift:14:35: error: consecutive declarations on a line must be separated by ';'
        - ERROR | xcodebuild:  Zip/Zip/ZipUtilities.swift:14:35: error: expected declaration
        - ERROR | xcodebuild:  Zip/Zip/QuickZip.swift:24:61: error: use of undeclared type 'URL'
        - ERROR | xcodebuild:  Zip/Zip/QuickZip.swift:40:102: error: use of undeclared type 'URL'
        - WARN  | xcodebuild:  Zip/Zip/Zip.swift:85:33: warning: extraneous '_' in parameter: 'zipFilePath' has no keyword argument name
        - WARN  | xcodebuild:  Zip/Zip/Zip.swift:343:48: warning: extraneous '_' in parameter: 'fileExtension' has no keyword argument name
        - WARN  | xcodebuild:  Zip/Zip/Zip.swift:355:46: warning: extraneous '_' in parameter: 'fileExtension' has no keyword argument name
        - WARN  | xcodebuild:  Zip/Zip/Zip.swift:364:49: warning: extraneous '_' in parameter: 'fileExtension' has no keyword argument name
        - WARN  | xcodebuild:  Zip/Zip/Zip.swift:375:44: warning: extraneous '_' in parameter: 'fileExtension' has no keyword argument name
        - ERROR | xcodebuild:  Zip/Zip/Zip.swift:13:23: error: use of undeclared type 'Error'
        - ERROR | xcodebuild:  Zip/Zip/Zip.swift:85:48: error: use of undeclared type 'URL'
        - ERROR | xcodebuild:  Zip/Zip/Zip.swift:85:66: error: use of undeclared type 'URL'
        - ERROR | xcodebuild:  Zip/Zip/Zip.swift:234:40: error: use of undeclared type 'URL'
        - ERROR | xcodebuild:  Zip/Zip/Zip.swift:234:59: error: use of undeclared type 'URL'
        - ERROR | xcodebuild:  Zip/Zip/Zip.swift:13:13: error: type 'ZipError' does not conform to protocol 'RawRepresentable'
        - NOTE  | xcodebuild:  Swift.RawRepresentable:9:20: note: protocol requires nested type 'RawValue'
        - ERROR | xcodebuild:  Zip/Zip/Zip.swift:101:57: error: argument 'count' must precede argument 'repeating'
        - ERROR | xcodebuild:  Zip/Zip/Zip.swift:106:71: error: use of unresolved identifier 'path'
        - ERROR | xcodebuild:  Zip/Zip/Zip.swift:107:51: error: use of unresolved identifier 'FileAttributeKey'
        - ERROR | xcodebuild:  Zip/Zip/Zip.swift:111:31: error: use of unresolved identifier 'Progress'
        - ERROR | xcodebuild:  Zip/Zip/Zip.swift:114:32: error: use of unresolved identifier 'ProgressKind'
        - ERROR | xcodebuild:  Zip/Zip/Zip.swift:117:29: error: use of unresolved identifier 'path'
        - ERROR | xcodebuild:  Zip/Zip/Zip.swift:122:28: error: thrown expression type 'ZipError' does not conform to 'ErrorType'
        - ERROR | xcodebuild:  Zip/Zip/Zip.swift:125:40: error: value of type 'String' has no member 'cString'
        - ERROR | xcodebuild:  Zip/Zip/Zip.swift:126:17: error: use of unresolved identifier 'ret'
        - ERROR | xcodebuild:  Zip/Zip/Zip.swift:129:17: error: use of unresolved identifier 'ret'
        - ERROR | xcodebuild:  Zip/Zip/Zip.swift:131:16: error: use of unresolved identifier 'ret'
        - ERROR | xcodebuild:  Zip/Zip/Zip.swift:132:32: error: thrown expression type 'ZipError' does not conform to 'ErrorType'
        - ERROR | xcodebuild:  Zip/Zip/Zip.swift:135:34: error: use of unresolved identifier 'MemoryLayout'
        - ERROR | xcodebuild:  Zip/Zip/Zip.swift:136:13: error: use of unresolved identifier 'ret'
        - ERROR | xcodebuild:  Zip/Zip/Zip.swift:137:16: error: use of unresolved identifier 'ret'
        - ERROR | xcodebuild:  Zip/Zip/Zip.swift:139:32: error: thrown expression type 'ZipError' does not conform to 'ErrorType'
        - ERROR | xcodebuild:  Zip/Zip/Zip.swift:144:28: error: type 'UnsafeMutablePointer<CChar>' (aka 'UnsafeMutablePointer<Int8>') has no member 'allocate'
        - ERROR | xcodebuild:  Zip/Zip/Zip.swift:151:32: error: thrown expression type 'ZipError' does not conform to 'ErrorType'
        - ERROR | xcodebuild:  Zip/Zip/Zip.swift:160:50: error: use of unresolved identifier 'CharacterSet'
        - ERROR | xcodebuild:  Zip/Zip/Zip.swift:166:32: error: use of unresolved identifier 'Date'
        - ERROR | xcodebuild:  Zip/Zip/Zip.swift:167:40: error: use of unresolved identifier 'FileAttributeKey'
        - ERROR | xcodebuild:  Zip/Zip/Zip.swift:168:40: error: use of unresolved identifier 'FileAttributeKey'
        - ERROR | xcodebuild:  Zip/Zip/Zip.swift:180:17: error: use of unresolved identifier 'ret'
        - ERROR | xcodebuild:  Zip/Zip/Zip.swift:193:20: error: value of optional type 'UnsafeMutablePointer<FILE>?' not unwrapped; did you mean to use '!' or '?'?
        - ERROR | xcodebuild:  Zip/Zip/Zip.swift:196:32: error: thrown expression type 'ZipError' does not conform to 'ErrorType'
        - ERROR | xcodebuild:  Zip/Zip/Zip.swift:198:13: error: use of unresolved identifier 'ret'
        - ERROR | xcodebuild:  Zip/Zip/Zip.swift:202:49: error: argument passed to call that takes no arguments
        - ERROR | xcodebuild:  Zip/Zip/Zip.swift:207:18: error: use of unresolved identifier 'ret'
        - ERROR | xcodebuild:  Zip/Zip/Zip.swift:207:35: error: use of unresolved identifier 'ret'
        - ERROR | xcodebuild:  Zip/Zip/Zip.swift:211:29: error: argument passed to call that takes no arguments
        - ERROR | xcodebuild:  Zip/Zip/Zip.swift:252:21: error: use of unresolved identifier 'processedPaths'
        - ERROR | xcodebuild:  Zip/Zip/Zip.swift:264:31: error: use of unresolved identifier 'Progress'
        - ERROR | xcodebuild:  Zip/Zip/Zip.swift:267:32: error: use of unresolved identifier 'ProgressKind'
        - ERROR | xcodebuild:  Zip/Zip/Zip.swift:270:27: error: use of unresolved identifier 'destinationPath'
        - ERROR | xcodebuild:  Zip/Zip/Zip.swift:271:21: error: use of unresolved identifier 'processedPaths'
        - ERROR | xcodebuild:  Zip/Zip/Zip.swift:330:29: error: argument passed to call that takes no arguments
        - WARN  | xcodebuild:  Zip/Zip/ZipUtilities.swift:37:35: warning: extraneous '_' in parameter: 'paths' has no keyword argument name
        - WARN  | xcodebuild:  Zip/Zip/ZipUtilities.swift:63:43: warning: extraneous '_' in parameter: 'directory' has no keyword argument name
        - ERROR | xcodebuild:  Zip/Zip/ZipUtilities.swift:20:26: error: use of undeclared type 'URL'
        - ERROR | xcodebuild:  Zip/Zip/ZipUtilities.swift:37:45: error: use of undeclared type 'URL'
        - ERROR | xcodebuild:  Zip/Zip/ZipUtilities.swift:63:56: error: use of undeclared type 'URL'
    
    opened by mostafaberg 13
  • Cannot build on Xcode9

    Cannot build on Xcode9

    I've updated this library to 1.0.0 to use it with Xcode9. Prior to convert my project to Swift 4 syntax I see an error Iike the screenshot below. screen shot 2017-10-01 at 12 54 44 I couldn't proceed with the migration because the project didn't compile, so I had to manually modify the 2 offending lines reverting to previous version, then I migrated the project to swift 4 and reverted the lines. Isn't there a better way to handle the transition to swift 4 for this project?

    opened by alessionunzi 12
  • Zip file created with Password on iOS can't unzip on Windows

    Zip file created with Password on iOS can't unzip on Windows

    Hi, I'm using your lib in my iOS project. My problem is the zip file that is created with password on iOS 10.0 (Both Simulator and Real iPhone) can't unzip on Windows. I've tried many unzip tools (WinRAR, 7Zip...) but all failed with a message "Wrong password". (The problem is only occurred on my password protected zip file, if password is null, it is perfectly unzipped on Windows)

    Here is the zipped file https://dl.dropboxusercontent.com/u/38691130/image_pass_123.zip Password is "123"

    Thankyou so much!

    duplicate 
    opened by dttrinh 11
  • Please help! Getting error no such module 'minizip' during builds

    Please help! Getting error no such module 'minizip' during builds

    Hello all,

    I am trying to incorporate this library into my project and my pod reference looks like this below:

    pod 'Zip', git: 'https://github.com/marmelroy/Zip', branch: ‘master’, submodules: true

    However, when my swift 3.0 source uses import minizip, I get the following error.

    opened by jlaurence2020 9
  • Execute bit is lost

    Execute bit is lost

    Just stumbled on this as the only Swift cocoapod that works with my application. My only issue is that it strips the execute bits when it unzips. I have a zip with a .app inside. After unzipping, I get something like this guy does: http://apple.stackexchange.com/questions/181026/lsopenurlswithrole-failed-with-error-10810-cant-open-install-os-x-yosemite

    When I mark everything as executable, the .app works again. That's not a very clean solution. I'm wondering if I missed something.

    Below is my usage:

    try Zip.unzipFile(location, destination: applicationsDirectory, overwrite: true, password: nil, progress: { (progress) -> () in
                    print(progress)
                    DispatchQueue.main.async {
                        self.downloadProgressBar.doubleValue = progress * 0.2 + 0.8;
                    }
                }) // Unzip
    

    Any help is much appreciated.

    bug enhancement 
    opened by jssuttles 9
  • Swift2.3 Cocoapods - minizip is missing

    Swift2.3 Cocoapods - minizip is missing

    Migration from swift 2.2 to 2.3 with XCode 8 triggers an error on build :

    no such module 'minizip'

    I tried to point on specific branch without success :

    pod 'Zip', '~> 0.4' or pod 'Zip', :git => 'https://github.com/marmelroy/Zip.git', :branch => 'swift2.3'

    opened by jhanzo 9
  • Feature/swift3.0

    Feature/swift3.0

    +This PR includes changes to the source files and the test cases that Utilizes Swift 3.0 +Tests have been run and all pass +Verified filesystem to confirm zip files work on the device properly +Tested on XCode 8.0b3 (8S174q)

    opened by mostafaberg 9
  • Unable to zip file from URL

    Unable to zip file from URL

    Hi, I am trying to zip file which I have accessed via UIDocumentPickerViewController and saving it in the same directory with source and destination url: file:///private/var/mobile/Library/Mobile%20Documents/com~apple~CloudDocs/Downloads/ and I am getting this error: The operation couldn’t be completed. (Zip.ZipError error 2.) with description Error: Failed to zip file.

    Here is the code: func zip(url: URL) -> URL? { do { let tokens = url.lastPathComponent.split(separator: ".") let firstToken = "\(tokens.first ?? "")" let zipFilePathURL = try Zip.quickZipFiles([url.deletingLastPathComponent()], fileName: firstToken) return zipFilePathURL } catch let error { logger.error("\(#function) Error: \(error.localizedDescription)") } return nil }

    I tried to zip a .pdf file when I got this error. I will be glad if you can help me out here. Thanks in advance.

    opened by Zulqurn 0
  • Special characters

    Special characters

    When I'm compressing files with special characters the result of the file compressed it's so strange.

    Real file: Sebastián,García_stl

    Result of compressed file: Sebastián,García_.stl

    What I can do with that?

    opened by wikyburns 0
  • Not able to use zip.xcframework

    Not able to use zip.xcframework

    Hello Team,

    I am trying to use zip.xcframework in my app with other frameworks but getting these errors(Attached error screenshot) when trying to build my app....

    Can you plz suggest what's wrong with using zip.xcframework...

    Thanks Screenshot 2022-04-12 at 13 57 30

    opened by sumitkapoorpurple 5
  • Unzipping also returns unzipped url to a corrupted file in a __MACOSX directory

    Unzipping also returns unzipped url to a corrupted file in a __MACOSX directory

    When unzipping a file to a directory toDir using this call:

    try Zip.unzipFile(zippedFileUrl, destination: toDirUrl, overwrite: true, password: nil, progress: nil) { (url) in ... }
    

    the closure gets called twice. First time with the url to the unzipped file in toDirUrl, so something like:

    ..../toDirUrl/myfile.png

    the closure then gets called a second time pointing to:

    ..../toDirUrl/__MACOSX/._myfile.png

    Problem is that ..../toDirUrl/__MACOSX/._myfile.png is no good. Image is not readable. Also, not sure why I get called to let me know that unzipped file is in ..../toDirUrl/__MACOSX/._myfile.png when I already have a good readable version of it exactly at the path I specified ..../toDirUrl.

    So, now I have to special case and ignore any url pointing to the ..../toDirUrl/__MACOSX/... directory.

    opened by berzzani 0
Releases(2.1.2)
Owner
Roy Marmelstein
Ya tu sabes.
Roy Marmelstein
FileExplorer is a powerful iOS file browser that allows its users to choose and remove files and/or directories

FileExplorer (iOS 9.0+) ?? Project created and maintained by Rafał Augustyniak. You can find me on twitter (@RaAugustyniak). Introduction FileExplorer

Rafał Augustyniak 717 Dec 19, 2022
FileManager replacement for Local, iCloud and Remote (WebDAV/FTP/Dropbox/OneDrive) files -- Swift

This Swift library provide a swifty way to deal with local and remote files and directories in a unified way. This library provides implementaion of W

Amir Abbas Mousavian 890 Jan 6, 2023
NV_MVVM-C is a template file generator. This can reduce the time taken to write the boilerplate code and create the files.

NV_MVVM-C Template, is an MVVM-C Boilerplate generator which will help you generate all the necessary files for your project architected in MVVM-C.

Nikhil Vinod 9 Sep 6, 2022
SwiftXLSX - A library focused creating Excel spreadsheet (XLSX) files directly on mobile devices

SwiftXLSX Excel spreadsheet (XLSX) format writer on pure SWIFT. SwiftXLSX is a l

null 19 Dec 13, 2022
FileKit is a Swift framework that allows for simple and expressive file management.

FileKit is a Swift framework that allows for simple and expressive file management.

Nikolai Vazquez 2.2k Jan 7, 2023
A micro-framework for observing file changes, both local and remote. Helpful in building developer tools.

KZFileWatchers Wouldn't it be great if we could adjust feeds and configurations of our native apps without having to sit back to Xcode, change code, r

Krzysztof Zabłocki 1k Dec 19, 2022
Swift framework to connect SMB2/3 shares

AMSMB2 This is small Swift library for iOS, macOS and tvOS which wraps libsmb2 and allows to connect a SMB2/3 share and do file operation. Install Coc

Amir Abbas Mousavian 157 Dec 19, 2022
File management and path analysis for Swift

Pathos offers cross-platform virtual file system APIs for Swift. Pathos is implement from ground-up with on each OS's native API. It has zero dependen

Daniel Duan 104 Nov 19, 2022
zip file I/O library for iOS, macOS and tvOS

ZipZap is a zip file I/O library for iOS, macOS and tvOS. The zip file is an ideal container for compound Objective-C documents. Zip files are widely

Glen Low 1.2k Dec 27, 2022
Zero-setup P2P file transfer between Macs and iOS devices

?? Ares Zero-setup* P2P file transfer between Macs and iOS devices Ares is a service that I built in under 24 hours, winning first place at HackED 201

Indragie Karunaratne 131 Jan 10, 2022
Edit a file, create a new file, and clone from Bitbucket in under 2 minutes

Edit a file, create a new file, and clone from Bitbucket in under 2 minutes When you're done, you can delete the content in this README and update the

Nikunj Munjiyasara 0 Nov 9, 2021
RavynOS File manager built in Cocoa/Appkit and ObjC

Filer A file manager and re-implementation of macOS's Finder. A key component of ravynOS, Filer is the first application you see after you start ravyn

RavynSoft 8 Oct 3, 2022
Effortless path operations in Swift

PathKit Effortless path operations in Swift. Usage let path = Path("/usr/bin/swift") Joining paths let path = Path("/usr/bin") + Path("swift") Determi

Kyle Fuller 1.4k Jan 5, 2023
Effortless ZIP Handling in Swift

ZIP Foundation is a library to create, read and modify ZIP archive files. It is written in Swift and based on Apple's libcompression for high performa

Thomas Zoechling 1.9k Dec 27, 2022
Finder-style iOS file browser written in Swift

FileBrowser iOS Finder-style file browser in Swift 4.0 with search, file previews and 3D touch. Simple and quick to use. Features ✨ Features ?? Browse

Roy Marmelstein 1.5k Dec 16, 2022
Swift framework for zipping and unzipping files.

Zip A Swift framework for zipping and unzipping files. Simple and quick to use. Built on top of minizip. Usage Import Zip at the top of the Swift file

Roy Marmelstein 2.3k Dec 30, 2022
ZipArchive is a simple utility class for zipping and unzipping files on iOS, macOS and tvOS.

SSZipArchive ZipArchive is a simple utility class for zipping and unzipping files on iOS, macOS and tvOS. Unzip zip files; Unzip password protected zi

ZipArchive 5.2k Jan 2, 2023
BeatboxiOS - A sample implementation for merging multiple video files and/or image files using AVFoundation

MergeVideos This is a sample implementation for merging multiple video files and

null 3 Oct 24, 2022
Localization/I18n: Incrementally update/translate your Strings files from .swift, .h, .m(m), .storyboard or .xib files.

Installation • Configuration • Usage • Build Script • Donation • Migration Guides • Issues • Contributing • License BartyCrouch BartyCrouch incrementa

Flinesoft 1.3k Jan 1, 2023
A Swift sample code to reads ISO 10303-21 exchange structures (STEP P21 files for AP242) split into multiple files using external references approach.

multipleP21ReadsSample A Swift sample code to reads ISO 10303-21 exchange structures (STEP P21 files for AP242) split into multiple files using extern

Tsutomu Yoshida 1 Nov 23, 2021