我知道这是非常基本的,我开始使用swift,我找不到一个有效的例子.
我想点击图片并采取行动.IBOutlet链接到主故事板上的图像.当我点击它时,我什么都没得到.我期待得到一个控制台消息.我究竟做错了什么?
import UIKit
class FirstViewController: UIViewController {
@IBOutlet weak var tapView: UIImageView!
let tapRec = UITapGestureRecognizer()
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
tapRec.addTarget(self, action: "tappedView")
tapView.addGestureRecognizer(tapRec)
}
func tappedView(){
println("image tapped")
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
}
Run Code Online (Sandbox Code Playgroud) 我正在将我的应用程序从Swift升级到Swift 2并遇到以下错误:
'deviceInputWithDevice' is unavailable: use object construction 'AVCaptureDeviceInput(device:error:)'
这是有问题的代码:
let captureDevice = AVCaptureDevice.defaultDeviceWithMediaType(AVMediaTypeVideo)
var input:AVCaptureDeviceInput
let error:NSError?
do {
let input = try AVCaptureDeviceInput.deviceInputWithDevice(captureDevice) as AVCaptureDeviceInput
} catch let error as NSError {
print(error)
}
Run Code Online (Sandbox Code Playgroud)
有人可以帮我理解建议的解决方案:"使用对象构造'AVCaptureDeviceInput(device:error :)'"以及我如何实现它?
我有一个数组:result [i].我想遍历数组中的每个字段并将其附加到我页面中的元素.
$("tr:first").after(result[i]);
Run Code Online (Sandbox Code Playgroud)
但我希望这会延迟发生.
一直在努力克服每个循环和延迟的队列如何工作,但我似乎无法解决它.我可以得到一个延迟,但只有在它们全部附加之前.
提前致谢.
我有一个元素列表,当点击每个元素时,我希望我的jQueryUI对话框在单击的列表元素旁边弹出.
$( "#selector" ).dialog({ draggable: false,
width: 250,
autoOpen: false,
position: [e.pageX,e.pageY] });
$(".openDialog").click(function(e){
console.log('I need the cooridnates x:'+e.pageX+' and y:'+e.pageY+'to be passed to the dialog box');
$( "#selector" ).dialog("open");
});
Run Code Online (Sandbox Code Playgroud)
我可以得到我需要的坐标,但是我无法将它们传递给对话框init.
希望对此有所了解.
提前致谢!
我正在尝试使用密钥对加密来验证我的应用程序和我的PHP服务器之间的身份.为此,我需要在我的应用程序中生成公钥后将公钥发送到服务器.
if let pubKey = NSData(base64EncodedData: publicKey, options: NSDataBase64DecodingOptions.allZeros)! {
println(pubKey)
}
Run Code Online (Sandbox Code Playgroud)
publicKey
是类型的Unmanaged<SecKey>
.
我在上面的代码中得到的错误是: Extra argument 'base64EncodedData' in call
我该怎么做?有没有更好的办法?
编辑:这是密钥对的生成方式:
var publicKeyPtr, privateKeyPtr: Unmanaged<SecKey>?
let parameters = [
String(kSecAttrKeyType): kSecAttrKeyTypeRSA,
String(kSecAttrKeySizeInBits): 2048
]
let result = SecKeyGeneratePair(parameters, &publicKeyPtr, &privateKeyPtr)
let publicKey = publicKeyPtr!.takeRetainedValue()
let privateKey = privateKeyPtr!.takeRetainedValue()
let blockSize = SecKeyGetBlockSize(publicKey)
Run Code Online (Sandbox Code Playgroud)
编辑2:所以问题是SecKey不是NSData,所以我的问题应该是:如何将publicKey:SecKey转换为NSData?
我使用SecKeyGeneratePair生成了一个守护者。
var publicKeyPtr, privateKeyPtr: Unmanaged<SecKey>?
let publicKeyParameters: [String: AnyObject] = [
kSecAttrIsPermanent: true,
kSecAttrApplicationTag: "com.example.site.public"
]
let privateKeyParameters: [String: AnyObject] = [
kSecAttrIsPermanent: true,
kSecAttrApplicationTag: "com.example.site.private"
]
let parameters: [String: AnyObject] = [
kSecAttrKeyType: kSecAttrKeyTypeRSA,
kSecAttrKeySizeInBits: 2048,
kSecPublicKeyAttrs.takeUnretainedValue() as String: publicKeyParameters,
kSecPrivateKeyAttrs.takeUnretainedValue() as String: privateKeyParameters
]
let result = SecKeyGeneratePair(parameters, &publicKeyPtr, &privateKeyPtr)
let publicKey = publicKeyPtr!.takeRetainedValue()
let privateKey = privateKeyPtr!.takeRetainedValue()
let blockSize = SecKeyGetBlockSize(publicKey)
Run Code Online (Sandbox Code Playgroud)
如果我打印出publicKey,我可以看到模数,我很确定这是我所需要的:
publicKey: <SecKeyRef algorithm id: 1, key type: RSAPublicKey, version: 3, block size: 2048 bits, exponent: …
Run Code Online (Sandbox Code Playgroud)