Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/121.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios radiansToVector和randomInRange Objective-C函数的快速替代方案是什么?_Ios_Objective C_Swift_Sprite Kit - Fatal编程技术网

Ios radiansToVector和randomInRange Objective-C函数的快速替代方案是什么?

Ios radiansToVector和randomInRange Objective-C函数的快速替代方案是什么?,ios,objective-c,swift,sprite-kit,Ios,Objective C,Swift,Sprite Kit,我看了一个旧的ios 7 spritekit课程,他们使用了这些方法。我试着在Swift中使用它们,但它们不起作用。我应该用什么来代替 static inline CGVector radiansToVector(CGFloat radians) { CGVector vector; vector.dx = cosf(radians); vector.dy = sinf(radians); return vector; } static inline CGFlo

我看了一个旧的ios 7 spritekit课程,他们使用了这些方法。我试着在Swift中使用它们,但它们不起作用。我应该用什么来代替

static inline CGVector radiansToVector(CGFloat radians) {
    CGVector vector;
    vector.dx = cosf(radians);
    vector.dy = sinf(radians);
    return vector;
}

static inline CGFloat randomInRange(CGFloat low, CGFloat high) {
    CGFloat value = arc4random_uniform(UINT32_MAX) / (CGFloat)UINT32_MAX;
    return value * (high - low) + low;
}
Swift重写:

func randomInRange(low: CGFloat, high: CGFloat) -> CGFloat {
    let value = CGFloat(arc4random_uniform(UINT32_MAX)) / CGFloat(UINT32_MAX)
    return value * (high - low) + low
}

func radiansToVector(radians: CGFloat) -> CGVector {
    return CGVector(dx: cos(radians), dy: sin(radians))
}
更新:后一种更快速的方式(感谢@Jessy指出):


当然它不起作用,Objective-C(实际上代码是“纯”C)和Swift是两种不同的编程语言。你试着翻译代码了吗?你的问题是什么,你被困在哪里了?我知道我的意思是我试图修改代码以适应swift,但是我没有很好地修改它。谢谢你传递的“radiansToVector”不是真正的swift。应该是CGVector的初始值设定项。@Jessy因为CoreGraphics是基于C的框架,
在非类类型“CGVector”中不允许使用方便的初始值设定项。
你好,rshev我对一些代码有问题,我可以直接发邮件给你吗?@AdeebAbaza请在StackOverflow上发帖,这样其他人也可以帮助你。@Jessy谢谢,添加了一个示例。
extension CGVector {
    init(radians: CGFloat) {
        self.dx = cos(radians)
        self.dy = sin(radians)
    }
}