基本上这是你需要做的:
- 将您的阵列存档到 MAC 上的文件;并在 Swift 代码中完成!
- 将此文件添加到您的应用程序在 MAC 上的主包中
- 在 iOS 上从应用程序的主包中取消归档文件
棘手的部分是您需要自动完成所有这些操作。
1. 将您的数组存档到 MAC 上的文件并使用 Swift 代码完成!
创建使用数组生成存档的 Swift 脚本。脚本的第一个参数将接受 App 主包文件夹位置(它将在第二步传递)。将CreatePointsArrayArchive.swift文件添加到您的项目中,不要将其添加到任何目标中。
CreatePointsArrayArchive.swift的内容:
import Foundation
import Cocoa
println("MY APP: Generating points array archive...")
let archiveFileName = "MyPointsArray.archive"
let resourcesFolderPath = Process.arguments[1] // access first element because 0 contains this script file name
// YOUR CODE:
let pnt1 = CGPointMake(0, 33)
let pnt2 = CGPointMake(33, 66)
let pnt3 = CGPointMake(47, 71)
let pnt4 = CGPointMake(66, 65)
let pnt5 = CGPointMake(79, 69)
let pnt6 = CGPointMake(90, 67)
let pnt7 = CGPointMake(116, 36)
let pnt8 = CGPointMake(93, 8)
let pnt9 = CGPointMake(59, 0)
let pnt10 = CGPointMake(37, 0)
var pntz = NSMutableArray()
pntz.addObject(NSValue(point: pnt1))
pntz.addObject(NSValue(point: pnt2))
pntz.addObject(NSValue(point: pnt3))
pntz.addObject(NSValue(point: pnt4))
pntz.addObject(NSValue(point: pnt5))
pntz.addObject(NSValue(point: pnt6))
pntz.addObject(NSValue(point: pnt7))
pntz.addObject(NSValue(point: pnt8))
pntz.addObject(NSValue(point: pnt9))
pntz.addObject(NSValue(point: pnt10))
// Archiving array to file
if NSKeyedArchiver.archiveRootObject(pntz, toFile: archiveFileName) {
println(" Array points archive generated SUCCESSFULY wit hfile name '\(archiveFileName)'.")
} else {
println(" FAILED to generate array points archive.")
}
// Copy file to app budle
println("MY APP: Copying '\(archiveFileName)' to app main bundle at path '\(resourcesFolderPath)'...")
var err: NSError?
if NSFileManager.defaultManager().copyItemAtPath(archiveFileName, toPath: resourcesFolderPath + archiveFileName, error: &err) {
println(" '\(archiveFileName)' file added to app main bundle.")
} else {
println(" FAILED to add '\(archiveFileName)' to app main bundle.")
}
...所以在第一步之后,项目的根文件夹中有CreatePointsArrayArchive.swift文件;使用上面列出的代码。
2. 将此文件添加到您的应用程序在 MAC 上的主包中
您需要将此作为构建步骤执行。这是您需要做的:
打开项目构建目标和运行脚本阶段:
在脚本文本区域中键入以下行:
xcrun swift -sdk $(xcrun --show-sdk-path --sdk macosx) CreatePointsArrayArchive.swift ${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/
... 截屏:
3. 在 iOS 上从应用程序的主包中取消归档文件
要在 iOS 应用程序中访问您的存档,请使用以下代码:
// NOTE: MyPointsArray.archive is name of the file that was defined in CreatePointsArrayArchive.swift file
let pointsArchivePath = NSBundle.mainBundle().pathForResource("MyPointsArray", ofType: "archive")
let pointsArr = NSKeyedUnarchiver.unarchiveObjectWithFile(archivePath) as NSArray