iOS 11 Apple现在支持为iPhone 7/7 Plus及更高版本阅读NFC标签的消息.
我找到了一些演示,但不知道是否有办法阅读受保护的NFC标签.例如,旅行证件中嵌入了NFC标签,可以防止不安全的阅读.我在Apple文档中搜索了NFC NDEF协议,但没有任何功能需要NFC标签的质询/握手.有没有办法与这些类型的NFC标签进行交互?
我使用Eureka库,我遇到了一个问题.我需要一个多行标签行,但不知道该怎么做.我只能看到带截断标签行的单行.
class MainViewController: FormViewController {
override func viewDidLoad() {
super.viewDidLoad()
form +++=
Section()
<<< LabelRow { row in
row.title = "Hello World 1. Hello World 2. Hello World 3"
}
}
Run Code Online (Sandbox Code Playgroud) 我有以下代码
let width = UIScreen.mainScreen().bounds.width
let linkLabel = UILabel(frame: CGRect(x: 8, y: contentHeight, width: 100, height: labelHeight))
let linkButton = UIButton(frame: CGRect(x: 108, y: contentHeight, width: width - 108, height: labelHeight))
mainScrollView.addSubview(linkLabel)
mainScrollView.addSubview(linkButton)
linkLabel.text = "Link:"
linkButton.addTarget(self, action: #selector(linkButtonPressed), forControlEvents: .TouchUpInside)
linkButton.setTitle("http://example.com", forState: .Normal)
linkButton.layer.borderWidth = 1.0
mainScrollView.contentSize = CGSize(width: view.frame.width, height: contentHeight)
Run Code Online (Sandbox Code Playgroud)
所以标题不可见,但是当我点击按钮时,我可以获取它的标题属性
func linkButtonPressed(sender: UIButton) {
print("button title = \(sender.titleLabel?.text)")
}
Run Code Online (Sandbox Code Playgroud)
我得到了button title = Optional("http://example.com")但无论如何按钮标题不可见。有什么建议?
我有以下代码:
func testFunc(completion: (Bool) -> Void) {
let queue = NSOperationQueue()
queue.maxConcurrentOperationCount = 1
for i in 1...3 {
queue.addOperationWithBlock{
Alamofire.request(.GET, "https://httpbin.org/get").responseJSON { response in
switch (response.result){
case .Failure:
print("error")
break;
case .Success:
print("i = \(i)")
}
}
}
//queue.addOperationAfterLast(operation)
}
queue.waitUntilAllOperationsAreFinished()
print("finished")
}
Run Code Online (Sandbox Code Playgroud)
输出是:
finished
i = 3
i = 1
i = 2
Run Code Online (Sandbox Code Playgroud)
但我希望以下内容:
i = 3
i = 1
i = 2
finished
Run Code Online (Sandbox Code Playgroud)
那么,为什么queue.waitUntilAllOperationsAreFinished()不等待?
当我们写下以下内容时:
for i in 1...10 {
//do stuff
}
Run Code Online (Sandbox Code Playgroud)
我想知道1...10在函数调用中使用它的范围是什么类型,例如:
myFunc(1...10)
Run Code Online (Sandbox Code Playgroud) 我的项目中有一个应该有效的代码.简单地说,我想按创建日期对请求的获取结果进行排序,如下所示:
0 context =...
1 let fetchRequest = NSFetchRequest(entityName: CoreDataValues.EntityName)
2 do {
3 let results = try context?.executeFetchRequest(fetchRequest)
4 let sortDescriptor = NSSortDescriptor(key: CoreDataValues.CreationDateKey, ascending: true)
5 if let sortedObjects = (results as? NSArray)?.sortedArrayUsingDescriptors([sortDescriptor]) as? [NSManagedObject] {
6 searchTextObjects = sortedObjects
7 tableView.reloadData()
8 }
9 } catch let error as NSError {
10 print("Could not fetch \(error), \(error.userInfo)")
11 }
Run Code Online (Sandbox Code Playgroud)
但在5行我发出警告:"从[AnyObject]转换为无关类型的NSArray总是失败".
我有多个请求:
var data1: MyData?
var data2: MyData?
var data3: MyData?
func makeRequest(url: String, completion: (result: ResponseResult, data: MyData?) -> Void){
Alamofire.request(.GET, url).responseJSON { response in
switch response.result {
case .Success(let JSON):
completion(result: .Success, MyData(JSON))
case. Failure(let error):
completion(result: .Failure, nil)
}
}
}
makeRequest(url1){ result, data in
data1 = data
}
makeRequest(url2){ result, data in
data2 = data
}
makeRequest(url3){ result, data in
data3 = data
}
Run Code Online (Sandbox Code Playgroud)
收到所有数据后,我必须调用以下函数:
workWithData(data1, data2: data2, data3: data3)
Run Code Online (Sandbox Code Playgroud)
在那种情况下如何为这三个要求设置障碍?
奇怪的调用结果MemoryLayout<SampleStruct>.size。它在以下结构上返回 41。
struct SampleStruct {
var tt: Int?
var qq: Int?
var ww: Int?
}
Run Code Online (Sandbox Code Playgroud)
不能被3整除!的同时大小Int?是 9。怎么会呢?
我是OCaml的新手,现在正尝试移动数组。但是我在上收到语法错误arr.length。(第二行)
let shift (arr : array) (k : int) =
let size = arr.length;;
let shifted = Array.make size 0;;
for i = 0 to size- 1 do
if i < k
then shifted.(size- 1 - k + i) <- arr.(i);;
else shifted.(i-k) <- arr.(i);;
done
shifted;;
Run Code Online (Sandbox Code Playgroud) 我有以下功能,假设[CIImage]为了我的目的返回- 在tableView中显示照片的一些元数据.
func getCIImages() -> [CIImage] {
var images = [CIImage]()
let assets = PHAsset.fetchAssetsWithMediaType(.Image, options: nil)
for i in 0..<assets.count {
guard let asset = assets[i] as? PHAsset else {fatalError("Cannot cast as PHAsset")}
let semaphore = dispatch_semaphore_create(0)
asset.requestContentEditingInputWithOptions(nil) { contentEditingInput, _ in
//Get full image
guard let url = contentEditingInput?.fullSizeImageURL else {return}
guard let inputImage = CIImage(contentsOfURL: url) else {return}
images.append(inputImage)
dispatch_semaphore_signal(semaphore)
}
dispatch_semaphore_wait(semaphore, DISPATCH_TIME_FOREVER)
}
return images
}
Run Code Online (Sandbox Code Playgroud)
但它停留在信号量等待,并没有走得更远.我已经浏览了很多教程,但GCD的其他变种不起作用.我认为这是因为模拟器,我不知道,无法在真实设备上进行测试.请帮忙.
我正在使用 Xcode8 和 swift 3。所以我将我的项目完全转换为最新的语法,现在我收到错误:
在此上下文中,“错误”对于类型查找不明确
在函数中:
func loginButton(_ loginButton: FBSDKLoginButton!, didCompleteWith result: FBSDKLoginManagerLoginResult!, error: Error!) {
//do stuff
}
Run Code Online (Sandbox Code Playgroud)
FBSDK中的函数声明如下:
- (void) loginButton:(FBSDKLoginButton *)loginButton
didCompleteWithResult:(FBSDKLoginManagerLoginResult *)result
error:(NSError *)error;
Run Code Online (Sandbox Code Playgroud)
所以我尝试将错误类型更改为 NSError 但出现另一个错误:
“SignInViewController”不符合协议“FBSDKLoginButtonDelegate”
我不知道该怎么办。任何帮助表示赞赏!