Tag: 快速

Swift iOS9新联系人框架 – 如何检索只有CNContact有一个有效的电子邮件地址?

在iOS9的最新联系人框架中,如何只检索具有有效电子邮件地址的CNContact? 当前代码: func getContacts() -> [CNContact] { let contactStore = CNContactStore() let predicate: NSPredicate = NSPredicate(format: "") let keysToFetch = [CNContactGivenNameKey, CNContactFamilyNameKey, CNContactEmailAddressesKey] do { return try contactStore.unifiedContactsMatchingPredicate(predicate, keysToFetch: keysToFetch) } catch { return [] } }

如何生成所有可能的组合?

我目前正在尝试从一个Strings Array中创build一个所有可能组合的Set ,每个元素只包含一个字母。 Array本身可以包含相同的字母两次或甚至更多,他们应该只发生在经常使用。 该Set稍后将包含从至less2个字母到给定Array长度的所有组合。 我在这里search了stackoverflow,但只发现忽略事实的排列函数,每个字母应该只发生在经常使用。 这是我第一个Swift 2项目,所以请原谅我greenhornish性格:) 我想要的是 var array = ["A", "B", "C","D"] var combinations: Set<String> … <MAGIC> … print(combinations) // "AB", "ABC", "ABD", "ABCD", "ABDC", "AC", "ACB", "ACD", "ACBD", "ACDB", and so on … 我目前的做法 func permuation(arr: Array<String>) { for (index, elementA) in arr.enumerate() { //1..2..3..4 var tmpString = elementA var tmpArray […]

如何closures当前的ViewController并转到Swift中的另一个视图

我是Swift的新手,我想知道如何closures当前视图控制器并转到另一个视图。 我的故事板如下所示:MainMenuView – > GameViewController – > GameOverView。 我想closuresGameViewController去GameOverView,而不是MainMenuView。 我在我的MainMenuView中使用下面的代码: @IBAction func StartButton(sender: UIButton) { let storyBoard : UIStoryboard = UIStoryboard(name: "Main", bundle:nil) let nextViewController = storyBoard.instantiateViewControllerWithIdentifier("GameViewController") as! GameViewController self.presentViewController(nextViewController, animated:true, completion:nil) restGame() } 在GameViewController中,我使用了这个代码,但是并没有closuresGameViewController。 let storyBoard : UIStoryboard = UIStoryboard(name: "Main", bundle:nil) let nextViewController = storyBoard.instantiateViewControllerWithIdentifier("GameOverView") as! GameOverView self.presentViewController(nextViewController, animated:true, completion:nil) 这是我的GameOverView代码: class GameOverView: […]

从UIAlertView文本字段获取文本的问题

在我的应用程序,我想要一个文本框的警报。 点击“完成”后,我想将文本字段保存在一个string中。 点击“取消”后,我只想closures警报。 我已经创build了这样的警报: var alert = UIAlertView() alert.title = "Enter Input" alert.addButtonWithTitle("Done") alert.alertViewStyle = UIAlertViewStyle.PlainTextInput alert.addButtonWithTitle("Cancel") alert.show() let textField = alert.textFieldAtIndex(0) textField!.placeholder = "Enter an Item" println(textField!.text) 警报看起来像这样: 我想知道如何从文本框中获取文本,以及如何为“完成”button和“取消”button创build事件。

在Swift中查找经纬度的城市名称和国家

我在Swift3上的应用程序工作,我有信函问题,我找不到答案。 如何根据经纬度知道城市名称和国家短名称? import UIKit import CoreLocation class ViewController: UIViewController, CLLocationManagerDelegate{ let locationManager = CLLocationManager() var latitude: Double = 0 var longitude: Double = 0 override func viewDidLoad() { super.viewDidLoad() // For use when the app is open & in the background locationManager.requestAlwaysAuthorization() // For use when the app is open //locationManager.requestWhenInUseAuthorization() locationManager.delegate = self locationManager.startUpdatingLocation() […]

如何在Swift中正确使用类扩展?

在Swift中,我一直使用扩展来扩展封闭types,并提供方便的,无逻辑的function,比如animation,math扩展等。但是,由于扩展是遍布整个代码库的硬依赖,所以在实现作为延伸的东西。 不过,最近我已经看到,苹果build议在更大程度上使用扩展,例如将协议作为单独的扩展来实现。 也就是说,如果你有一个实现协议B的类A,那么你最终得到这个devise: class A { // Initializers, stored properties etc. } extension A: B { // Protocol implementation } 当你进入这个兔子洞,我开始看到更多基于扩展的代码,例如: fileprivate extension A { // Private, calculated properties } fileprivate extension A { // Private functions } 我的一部分就像你在分开的扩展中实现协议时所获得的构build块。 它使得这个类的不同部分真正的不同。 但是,只要inheritance这个类,就不得不改变这个devise,因为扩展函数不能被覆盖。 我认为第二种方法是…有趣的。 有一件好事就是你不必注释每个私人财产和function作为私人,因为你可以指定的扩展。 然而,这种devise也分裂了存储和非存储的属性,公共和私人function,使得类的“逻辑”更难以遵循(我写小类)。 那和子类问题一起,让我在扩展仙境的门廊上停住了一点。 很想听听Swift社区如何看待扩展。 你怎么看? 有一个silverbullet?

使用swift 4.0编译的模块不能在swift 3.1中导入

显然我已经设法build立我的项目在Xcode 9testing版,现在我只得到错误 使用swift 4.0编译的模块不能在swift 3.1中导入 当我在Xcode 8中运行项目。在我的情况下模块是Alamofire。 我试图重新启动Xcode,但没有任何反应的想法如何解决这个问题?

在xcode8中找不到ModuleName-Swift.h文件

我试图在没有运气的混合Swift和ObjectiveC项目上工作。 我的项目是由6个目标组成的: 应用 核心 CoreTest 概要 WatchKit扩展 WatchKit应用程序 我已经能够添加一个具有一个目标成员资格(App)的Swift类,并使用从App-Bridging-Header.h传递的ObjectiveC代码。“ObjectiveC into Swift code”范例就像一个魅力。 相反,我正在用“Swift into ObjectiveC code”范式挣扎。 在具体的情况下,我需要在四个目标的成员ObjectiveC .m文件中使用一个新的Swift类。 我到目前为止所做的是这样的: 添加一个新的Swift文件到Core项目,指定四个成员(App,Core,Summary,WatchKit Ext) XCode要求为三个项目Core,Summary和WatchKit Ext(App-Bridging-Header.h已经存在,因为它以前使用过)创build了-Bridging-Header.h ,并且我同意(不知道为什么它会在里面创build这些文件相同的组文件夹,我添加我的Swift类,但从来没有) 我在课前创build了Swift类,添加了@objc键 我去检查是否为所有模块设置Objective-C生成的接口标题名称 ,是的 我去检查Defines模块是否在所有模块中设置为No ,并且在主项目中设置为Yes ,是的 我记下所有四个目标的-Swift.h文件的导入 在我的Objective-C类里,我尝试使用我的新Swift类,显然它似乎工作(甚至自动完成) 我试图build立该项目,但它没有说-Swift.h文件没有find 我遵循苹果公司的混合和匹配指南和许多SO线程,包括这个似乎显然是为了解决我的同样的问题,但它不工作。 也见过这个 ,但没有工作。 已经尝试删除派生数据以及清理整个项目几次,没有运气。 编辑1:更多细节 这是我的Swift类导入RealmSwift的声明 @objc class MyClass: Object {} 这是ObjectiveC中Swift类的使用片段 MyClass *app = [[MyClass alloc] init]; 如果我避免使用#import …- Swift.h,构build失败,说我正在使用未声明的标识符“MyClass”,这是健全的。 如果我使用#import […]

我们可以检测用户是否通过主页button或lockingbutton而不听达尔文通知?

我最近向应用程序商店提交了一个新的二进制文件,并将其发送给我们进行审查,并立即被以下消息拒绝。 “不支持的操作 – 应用程序不允许收听设备locking通知”。 经过一番挖掘,我发现我们不能使用“com.apple.springboard.lockstate”来找出locking状态。 本质上,我的应用程序需要知道用户如何离开我的应用程序。 无论是按Home键,lockingbutton,通过另一个应用程序的通知,等离开应用程序。有没有办法实现这一目标? 我开始调查,看看我的应用程序是否在后台运行,也许我们可以检查应用程序的状态来弄清楚。 就我所知,我想知道是否有人对此有所了解

我可以从Swift中的SecKeyRef对象获取模数或指数吗?

在Swift中,我通过调用一些原始X509证书数据上的SecTrustCopyPublicKey创build了一个SecKeyRef对象。 这就是这个SecKeyRef对象的样子。 Optional(<SecKeyRef algorithm id: 1, key type: RSAPublicKey, version: 3, block size: 2048 bits, exponent: {hex: 10001, decimal: 65537}, modulus: <omitted a bunch of hex data>, addr: 0xsomeaddresshere>) 基本上,这个SecKeyRef对象包含了大量有关公钥的信息,但似乎没有办法将SecKeyRef实际转换为string, NSData或其他任何东西(这是我的目标,只是为了获得一个base64 public键)。 但是,我有一个函数,我可以给一个modulus和exponent ,它只会计算公钥是什么。 我已经通过传入从上面的SecKeyReflogging的数据来testing它。 但不知何故,我不能从SecKeyRef对象访问这些属性(我只能看到控制台中的整个对象;例如,我不能做SecKeyRef.modulus或类似的东西,似乎) 。 我的问题:我如何访问SecKeyRef.modulus ,或者,将此SecKeyRef转换为NSData或类似的东西? 谢谢 编辑 (了解更多信息) 我正在创build我的SecKeyRefdynamic,通过这个函数我有: func bytesToPublicKey(certData: NSData) -> SecKeyRef? { guard let certRef = SecCertificateCreateWithData(nil, certData) […]