Xcode 7 Swift 2 - 如何使用 .SKS 文件初始化视图?
Xcode 7 Swift 2 - How can I initialize a view with a .SKS file?
我到处寻找有关如何从 .SKS
文件初始化视图的示例。我发现的每个例子现在似乎都随着 Swift 2 和 Xcode 7 的引入而被打破。我正在使用 Xcode 7 GM。
有人可以举例说明如何以最快的方式执行此操作吗?
编辑* 在将其标记为重复之前,请注意 iOS 版本和 Xcode 版本。
我从 SpriteKit 示例项目中复制了我的代码。我现在在上班,如果你需要的话,我可以在这个周末将它转换为 Swift。在 Xcode 7 中运行,在 iOS 9.1.
@implementation SKScene (Archiving)
+ (instancetype)unarchiveFromFile:(NSString *)file {
/* Retrieve scene file path from the application bundle */
NSString *nodePath = [[NSBundle mainBundle] pathForResource:file ofType:@"sks"];
/* Unarchive the file to an SKScene object */
NSData *data = [NSData dataWithContentsOfFile:nodePath
options:NSDataReadingMappedIfSafe
error:nil];
NSKeyedUnarchiver *arch = [[NSKeyedUnarchiver alloc] initForReadingWithData:data];
[arch setClass:self forClassName:@"SKScene"];
SKScene *scene = [arch decodeObjectForKey:NSKeyedArchiveRootObjectKey];
[arch finishDecoding];
return scene;
}
@end
// ...
@implementation VTMillScene
+ (instancetype)loadMill {
return [self unarchiveFromFile:@"mill"]; // loads "mill.sks"
}
@end
我到处寻找有关如何从 .SKS
文件初始化视图的示例。我发现的每个例子现在似乎都随着 Swift 2 和 Xcode 7 的引入而被打破。我正在使用 Xcode 7 GM。
有人可以举例说明如何以最快的方式执行此操作吗?
编辑* 在将其标记为重复之前,请注意 iOS 版本和 Xcode 版本。
我从 SpriteKit 示例项目中复制了我的代码。我现在在上班,如果你需要的话,我可以在这个周末将它转换为 Swift。在 Xcode 7 中运行,在 iOS 9.1.
@implementation SKScene (Archiving)
+ (instancetype)unarchiveFromFile:(NSString *)file {
/* Retrieve scene file path from the application bundle */
NSString *nodePath = [[NSBundle mainBundle] pathForResource:file ofType:@"sks"];
/* Unarchive the file to an SKScene object */
NSData *data = [NSData dataWithContentsOfFile:nodePath
options:NSDataReadingMappedIfSafe
error:nil];
NSKeyedUnarchiver *arch = [[NSKeyedUnarchiver alloc] initForReadingWithData:data];
[arch setClass:self forClassName:@"SKScene"];
SKScene *scene = [arch decodeObjectForKey:NSKeyedArchiveRootObjectKey];
[arch finishDecoding];
return scene;
}
@end
// ...
@implementation VTMillScene
+ (instancetype)loadMill {
return [self unarchiveFromFile:@"mill"]; // loads "mill.sks"
}
@end