在SDK8.3之前我用这种方式生成了我的hmac.现在我在CCHmac()函数上出错了.由于我是初学者,我无法弄清楚如何解决它.在此先感谢您的帮助!
xcode警告:不能用类型的参数列表(UInt32,[CChar] ?, UInt,[CChar] ?, UInt,inout [(CUnsignedChar)]来'CCHmac'
func generateHMAC(key: String, data: String) -> String {
let cKey = key.cStringUsingEncoding(NSUTF8StringEncoding)
let cData = data.cStringUsingEncoding(NSUTF8StringEncoding)
var result = [CUnsignedChar](count: Int(CC_SHA512_DIGEST_LENGTH), repeatedValue: 0)
CCHmac(CCHmacAlgorithm(kCCHmacAlgSHA512), cKey, strlen(cKey!), cData, strlen(cData!), &result)
let hash = NSMutableString()
for var i = 0; i < result.count; i++ {
hash.appendFormat("%02hhx", result[i])
}
return hash as String
}
Run Code Online (Sandbox Code Playgroud) 我一直在尝试将这段代码从Objective-C(取自https://gist.github.com/mikeash/1254684)转换为Swift.我已经成功地使用它来根据API调用的结果重复一段代码.在Swift中有更好的方法吗?
dispatch_block_t recursiveBlockVehicle(void (^block)(dispatch_block_t recurse)) {
return ^{
block(recursiveBlockVehicle(block));
};
}
Run Code Online (Sandbox Code Playgroud)
任何帮助表示赞赏.
我目前正在使用Spritekit开发游戏.游戏具有在屏幕顶部产生并落向玩家角色的物体,并且当玩家角色与任何物体碰撞时游戏结束.我试图找到一种随着时间的推移逐渐加快游戏速度以使游戏更加困难的方法(即当游戏开始时物体以正常速度下降,5秒后加速50%,再过5秒后再加速50%,无限的.)
Would I need to use NSTimer to make a countdown to increase the gravity applied to the falling objects? Sorry if this is a basic thing, I'm kind of new to programming.
Thanks, Jake
EDIT:
My spawn method for enemies-
let spawn = SKAction.runBlock({() in self.spawnEnemy()})
let delay = SKAction.waitForDuration(NSTimeInterval(2.0))
let spawnThenDelay = SKAction.sequence([spawn, delay])
let spawnThenDelayForever = SKAction.repeatActionForever(spawnThenDelay)
self.runAction(spawnThenDelayForever)
Run Code Online (Sandbox Code Playgroud)
And my method for making the enemies fall-
func spawnEnemy() {
let enemy = SKNode()
let x = arc4random() …
Run Code Online (Sandbox Code Playgroud) 我正在研究一种算法来检查数字是否为素数并且需要处理非常大的数字,因此我使用的是 BigInteger 类。问题是抛出这个异常ArithmeticException BigInteger 会溢出支持的范围。
Exception in thread "main" java.lang.ArithmeticException: BigInteger would overflow supported range
at java.math.BigInteger.reportOverflow(Unknown Source)
at java.math.BigInteger.checkRange(Unknown Source)
at java.math.BigInteger.<init>(Unknown Source)
at java.math.BigInteger.shiftLeft(Unknown Source)
at java.math.BigInteger.pow(Unknown Source)
at Kitas.main(Kitas.java:118)
Run Code Online (Sandbox Code Playgroud)
以及抛出异常的行:
b = BigInteger.valueOf(2).pow((int) (35*(Math.pow(2, counter))));
Run Code Online (Sandbox Code Playgroud)
一旦计数器达到 26 的值,就会抛出异常。
我正在尝试过滤字典数组。以下代码是我正在寻找的场景的示例
let names = [
[ "firstName":"Chris","middleName":"Alex"],
["firstName":"Matt","middleName":""],
["firstName":"John","middleName":"Luke"],
["firstName":"Mary","middleName":"John"],
]
Run Code Online (Sandbox Code Playgroud)
最终结果应该是一个具有中间名的数组。
嗨我的应用程序第一次运行时崩溃了.这是我的代码:
let State = save.stringForKey("StateSave")
let City = save.stringForKey("CitySave")
let Vehicle = save.stringForKey("ModelNumberSave")
let ExtensionPeriod = save.stringForKey("ExtensionPeriodChoosed")
let Location = "Location"
if ExtensionPeriod == nil {
let name = ""
var FieldChoosed: Void = save.setObject(name, forKey: "ExtensionPeriodChoosed")
save.synchronize()
}
save.synchronize()
var DetailNames = ["\(State!)","\(City!)","\(Location)","\(Vehicle!)","\(ExtensionPeriod!)"]
Run Code Online (Sandbox Code Playgroud)
我得到了nil
这条线:
var DetailNames = ["(State!)","(City!)","(Location)","(Vehicle!)","(ExtensionPeriod!)"]
实际上ExtensionPeriod
是nil
.但我不明白为什么...... ExtensionPeriod
是nil
,但是我写的代码ExtensionPeriod
会像""所以不是nil
.请帮我.
我有这个字符串(325, 140, 739, 979)
。我想解析它并分别取出四个数字。
该字符串代表一个CGRect
. 我想将第一个数字作为x
第二个数字作为y
第三个数字width
作为最后一个数字height
。
实现这一目标的最佳方法是什么?
我有多个数组,我想根据其中一个数组的排序顺序对所有数组进行排序,如下所示:
var myArr = ["b", "a", "c"]
var myArr2 = ["letter b", "letter a", "letter c"]
var myArr3 = ["b is the second letter", "a is the first letter", "c is the third letter"]
func sortMultipleArraysBasedOnOne(alphabeticallyArray:Array, arrays:[Array]){
//order myArr alphabetically
for array in arrays{
//change all arrays indexes like in myArr
}
}
sortMultipleArraysBasedOnOne(myArr, [myArr2, myArr3])
Run Code Online (Sandbox Code Playgroud)
我希望在执行函数之后,数组将是这样的:
myArr = ["a", "b", "c"]
myArr2 = ["letter a", "letter b", "letter c"]
myArr3 = ["a is the first letter", "b is the …
Run Code Online (Sandbox Code Playgroud) 我有一个名为 Diary 的类,它实现了 NScoder 并且有一个成员,它是另一个名为 DiaryEntry 的类的数组
这是我的日记课
import Foundation
class Diary: NSObject,NSCoder
{
var dia=[DiaryEntry]()
override init()
{
super.init()
}
func setDiary(ent:DiaryEntry)
{
if(dia.count==0)
{
self.dia.append(ent)
}
else {
for entrie in dia
{
if(entrie==ent)
{
entrie.text+="\n"
entrie.text+=ent.text
break
}
else {
self.dia.append(ent)
}
}
}
}
required init(coder decoder: NSCoder) {
self.dia = decoder.decodeObjectForKey("dia") as [DiaryEntry]
super.init()
}
func encodeWithCoder(encoder: NSCoder) {
encoder.encodeObject(dia, forKey: "dia")
}
}
Run Code Online (Sandbox Code Playgroud) 我正在尝试为数字创建一个运算符.例如,将数字递增10的运算符.
这是我写的代码:
prefix operator +++{}
prefix operator +++<T>(inout operand: T) -> T{
operand += 10
return operand
}
Run Code Online (Sandbox Code Playgroud)
我的+=
运营商出错了.它需要数字操作数.所以我这样做了:
protocol Numeric {}
extension Int: Numeric {}
extension Float: Numeric {}
extension Double: Numeric {}
prefix operator +++ {}
prefix operator +++<T: Numeric>(inout operand: T) -> T {
operand += 10
return operand
}
Run Code Online (Sandbox Code Playgroud)
但它无法编译.有人有什么想法吗?
一切都很好,直到我下载了新版本的Xcode 6.3和Swift 1.2.
但是当我再次编译我的应用程序时,出现了很多错误.我已经处理了大部分问题,但有一个特定的错误,我无法弄清楚解决方案
错误是"AnyObject?不能转换为String?"
在更新Xcode之前,这绝对没问题:
let firstName = self.currentUser["firstName"] as? String
Run Code Online (Sandbox Code Playgroud) 我正在尝试解决Project Euler的问题#35,它问:
这个数字197被称为圆形素数,因为数字的所有旋转:197,971和719本身都是素数.
在100:2,3,5,7,11,13,17,31,37,71,73,79和97之下有十三个这样的素数.
一百万以下有多少个圆形素数?
为了解决这个问题,我在Swift中使用了以下代码:
let size = 1000000
func ESieve(x : Int) -> [Bool] {
var primes = [Bool](count: x + 1, repeatedValue: true)
primes[0] = false
primes[1] = false
for var i = 2; i < primes.count; i++ {
if !primes[i] {
continue
}
for (var j = 2*i; j < primes.count; j += i) {
primes[j] = false
}
}
return primes
}
let sieve = ESieve(size)
func getPrimes() -> [Int] {
var array …
Run Code Online (Sandbox Code Playgroud)