Tag: swift

第一次加载时,NSCache不适用于所有图像

我正在swift 3.0中的一个项目woking我在哪里caching服务器的响应通过使用NSCache作为填充它们在UITableView。 然而,由于某种原因,我只看到几个图像加载时,第一次加载的应用程序,但如果如果我滚动,回来我看到的一切(检索服务器的响应结束我重新加载我的tableview,但似乎不是这种情况)。 我不知道我在这里错过了什么,代码如下,以显示如何caching图像。 let imageCache = NSCache<AnyObject, AnyObject>() var imageURLString : String? extension UIImageView { public func imageFromServerURL(urlString: String) { imageURLString = urlString if let url = URL(string: urlString) { image = nil if let imageFromCache = imageCache.object(forKey: urlString as AnyObject) as? UIImage { self.image = imageFromCache return } URLSession.shared.dataTask(with: url, completionHandler: { (data, […]

ScrollView在子视图xcode 6 Swift的顶部添加空间

我试图用故事板来构build一个场景。 在那里我有一个scrollView,它有以下约束。 在滚动视图内我有一个普通的视图,它有以下约束。 现在在视图中我有几个标签和其他对象。 对于第一个标签我有一个从视图顶部空间为0.但是,下面的结果出现。 您可以注意到标签“Type”上方的空格。 请帮我解决一下这个。 谢谢。

更新文本字段ui在迅捷的ios

当我使用ios SDK 8的swift时遇到了一个问题 我用callback来获取数据的背景,当数据提取,我想设置一个文本字段值和更新屏幕。 这里是我的代码: @IBOutlet var txtTest: UITextField! @IBAction func login() { let username = "aaa"; let password = "bbb"; var res = ServiceClient.login(username, password: password){ (res:String, error:String?) -> Void in if(error == nil){ self.txtTest.text = res; } } } 运行这个代码,数据被正确提取,并且txtTest没有更新,但是当我点击txtTest时,这个值将被显示。 那么有什么办法强制更新用户界面? 或发送消息到UI线程?

根据Swift中的struct属性删除数组中的重复结构

我做了一个简单的结构,并实现了Equatable协议: extension MyModelStruct: Equatable {} func ==(lhs: NModelMatch, rhs: NModelMatch) -> Bool { let areEqual = lhs.id == rhs.id return areEqual } public struct MyModelStruct { var id : String? var staticId : String? init(fromDictionary dictionary: NSDictionary){ id = dictionary["id"] as? String … } 然后在我的项目中我得到一个[MyModelStruct]的数组,我该怎么做是删除所有具有相同ID的MyModelStruct let val1 = MyModelStruct(id:9, subId:1) let val2 = MyModelStruct(id:10, subId:1) […]

错误(“'()”与“UInt8”不同)“使用Swift中的写入函数将NSData字节写入NSOutputStream

我试图build立一个基于埃里卡Sadun的方法在Swift中的asynchronous文件下载。 但我需要它来处理更大的文件,所以我find了有关使用NSOutputStream而不是NSData的答案 ,这是有道理的。 但是,我不能得到它的工作。 (NSURLConnection didReceiveData函数中)向NSOutputStream写入函数添加NSData字节时出现此错误: '()' is not identical to 'UInt8'此行上的'()' is not identical to 'UInt8' : bytesWritten = self.downloadStream.write(data.bytes, maxLength: bytesLeftToWrite) 。 data.bytes的types是ConstUnsafePointer<()> ,而.write()函数期望types是ConstUnsafePointer<UInt8> ,所以在这个意义上,错误是非常有意义的。 但是因为我是iOS新手,当然还有Swift编程,所以我无法理解如何解决这个问题。 那么,如何将data.bytes: ConstUnsafePointer<()>为ConstUnsafePointer<UInt8> alt。 使这个工作有其他的方式吗? 我的didReceiveData函数: func connection(connection: NSURLConnection!, didReceiveData data: NSData!) { var bytesLeftToWrite: NSInteger = data.length var bytesWritten: NSInteger = 0 while bytesLeftToWrite > 0 { […]

如何在swift 2.0中只允许UITextfield中的某些数字

我有一个UITextField中,我得到的月份号码作为input。 我成功地将UITextField中的字符数限制为2。 但是我希望用户只input从1 to 12的值,而不是其他值。 这必须同时完成,当用户input数字,即在func textField(textField: UITextField!, shouldChangeCharactersInRange range: NSRange, replacementString string: String!) -> Bool 。 如果我使用一个简单的if条件来检查每个字符并在else部分返回false,那么textfield将不允许我使用清除或重新input任何其他字符。 谁来帮帮我。

用Swift创build一个分页UICollectionView

我试图创build一个UICollectionView与分页,并且每个项目的最大宽度是250点,我已经设法创build它,但我有2个问题:第一个项目开始不应该是,但在更多的空间开始当我试图刷卡时,总会有东西不让我滑动。 这是它的样子: video链接 这是我的代码: CenterCellCollectionFlowLayout.swift class CenterCellCollectionViewFlowLayout: UICollectionViewFlowLayout { override func layoutAttributesForElementsInRect(rect: CGRect) -> [AnyObject]? { var attributesToReturn:[UICollectionViewLayoutAttributes] = super.layoutAttributesForElementsInRect(rect) as! [UICollectionViewLayoutAttributes] for var i = 0 ; i < attributesToReturn.count ; i++ { var currentLayoutAttributes: UICollectionViewLayoutAttributes = attributesToReturn[i] var maximumSpacing: CGFloat = 50 let origin: CGFloat if i – 1 >= 0 { let […]

处理Firebase + Facebooklogin过程

我在我的应用程序中有Facebooklogin,而且我在圈子里运行,试图让需要通过注册屏幕的新用户和注册用户直接进入应用程序。 这是处理Facebooklogin的function(当点击button和Facebook授权时): func loginButton(_ loginButton: FBSDKLoginButton!, didCompleteWith result: FBSDKLoginManagerLoginResult!, error: Error!) { if error != nil { return } FBSDKGraphRequest(graphPath: "/me", parameters: ["fields": "name"]).start { (connection, result, err) in let accessToken = FBSDKAccessToken.current() guard let accessTokenString = accessToken?.tokenString else {return} let credentials = FIRFacebookAuthProvider.credential(withAccessToken: accessTokenString) FIRAuth.auth()?.signIn(with: credentials, completion: { (user, error) in if error != […]

没有调用MKMapView MKPointAnnotation点击事件

我正在使用MKPointAnnotation MKMapView(委托设置正确)。 注释是在后台线程调用的这个方法中生成的。 func updateMapAnnotations() { for var i = 0; i < DataManager.getStationList().count; i++ { var s = DataManager.getStationList()[i] as Station var annotation = MKPointAnnotation() annotation.setCoordinate(CLLocationCoordinate2D(latitude: s.latitude, longitude: s.longitude)) annotation.title = "\(s.id)" dispatch_async(dispatch_get_main_queue(), { self.mapView.addAnnotation(annotation) }) } } 注解视图在这里生成: func mapView(mapView: MKMapView!, viewForAnnotation annotation: MKAnnotation!) -> MKAnnotationView! { if (annotation is MKUserLocation) { return […]

在Swift中使用LSApplicationWorkspace

我已经将MobileCoreServices.framework添加到我的Xcode项目中,并将语句import MobileCoreServices到我的文件顶部。 我有代码行 let test = LSApplicationWorkspace.defaultWorkSpace() 而xcode表示Unresolved Identifier LSApplicationWorkspace 我试图清理和重build项目。 有任何想法吗?