在Objective-C中,使用Sprite-Kit,我会在Objective-C中成功使用类似下面的代码来调出一个新的场景
if ([touchedNode.name isEqual: @"Game Button"]) {
SKTransition *reveal = [SKTransition revealWithDirection:SKTransitionDirectionDown duration:1.0];
GameScene *newGameScene = [[GameScene alloc] initWithSize: self.size];
// Optionally, insert code to configure the new scene.
newGameScene.scaleMode = SKSceneScaleModeAspectFill;
[self.scene.view presentScene: newGameScene transition: reveal];
}
Run Code Online (Sandbox Code Playgroud)
在尝试将我的简单游戏移植到Swift时,到目前为止,我有这个工作......
for touch: AnyObject in touches {
let touchedNode = nodeAtPoint(touch.locationInNode(self))
println("Node touched: " + touchedNode.name);
let touchedNodeName:String = touchedNode.name
switch touchedNodeName {
case "Game Button":
println("Put code here to launch the game scene")
default:
println("No routine established for this") …Run Code Online (Sandbox Code Playgroud) 我想知道为什么这样做(注意我使用的是NSString类型):
let stringToSearch:NSString = "I want to make a cake and then prepare coffee"
let searchTerm:NSString = "cake"
let scanner = NSScanner(string: stringToSearch)
var result:NSString? = nil
scanner.scanUpToString(searchTerm, intoString:&result)
println(result) // correctly outputs "I want to make a"
Run Code Online (Sandbox Code Playgroud)
但如果我尝试使用"String"类型而不是"NSString",则无法编译:
let altStringToSearch:String = "I want to make a cake and then prepare coffee"
let altSearchTerm:String = "cake"
let altScanner = NSScanner(string: altStringToSearch)
var altResult:String? = nil
altScanner.scanUpToString(altSearchTerm, intoString:&altResult)
println(result)
Run Code Online (Sandbox Code Playgroud)
错误说"无法转换表达式的类型'BOOL'来输入'inout String?' 在scanUpToString行上.我不确定它甚至指的是什么BOOL.
那么,NSScanner不能与Swift String类型一起使用吗?是否有我应该使用的新命令?
我看过类似问题的答案,但仍然很困惑。
背景
我有一个项目正在运行,但我正在尝试在 Xcode 8.3.1 中重新创建它。我首先使用带有一个依赖项的 Swift 包管理器:[.Package(url: " https://github.com/OpenKitten/MongoKitten.git ", MajorVersion: 3)]。然后我按照我的笔记从 Cocoa 转换为 iOS(因为 SPM 不直接支持 iOS),这在之前的项目开始时有效:
一切看起来都很好,我的项目包括 MongoKitten 和它所依赖的一堆其他框架。其中之一称为“CLibreSSL”。我将所有框架作为目标添加到我新创建的目标中。
错误信息
我可以“导入 MongoKitten”到我的视图控制器中(自动完成工作)。但是,当我编译时,我收到此错误消息(即使我个人没有尝试导入 CLibreSSL):
Compile Swift source files
[... bunch of stuff referring to my new target and the viewcontroller ...]
<unknown>:0: error: missing required module 'CLibreSSL'
Run Code Online (Sandbox Code Playgroud)
我无法“导入 CLibreSSL”到我的视图控制器中(无法自动完成识别)。我注意到,当我访问 MongoKitten 相关源文件时,它们确实在导入语句中成功识别了 CLibreSSL。我什至可以删除它们并重新输入并成功自动完成。
问题
我意识到当我像我一样创建新目标时可能需要做一些额外的事情,并且它可能与搜索路径有关,但我已经尝试了很多东西并且结果没有改变。有人可以告诉我如何解决这个问题(请不要假设我有太多知识,因为我发现这些东西令人困惑)?
如果您需要更多信息,请告诉我。谢谢
让我们以这个简单的数据文件为例:http : //data.cdc.gov/data.json
我知道如何获取根键名称:
jq keys_unsorted[] -r data.json
Run Code Online (Sandbox Code Playgroud)
它产生:
@context
@id
@type
conformsTo
describedBy
dataset
Run Code Online (Sandbox Code Playgroud)
而且我知道如何获取密钥类型:
jq 'map(type)' data.json
Run Code Online (Sandbox Code Playgroud)
其中产生:
[
"string",
"string",
"string",
"string",
"string",
"array"
]
Run Code Online (Sandbox Code Playgroud)
没有某种方法可以将其组合成返回对吗?(我真正想做的是找到第一个根级数组的键名,如果有的话)。我可以写一个例程来弄清楚,但这似乎不雅。
额外的问题:如何确定键的类型(例如,我会以某种形式向 jq 发送“数据集”并得到“数组”作为回报)?
swift ×3
ios8 ×2
xcode6 ×2
frameworks ×1
ios ×1
jq ×1
json ×1
key ×1
nsscanner ×1
nsstring ×1
sprite-kit ×1
transitions ×1
types ×1
xcode8 ×1