Tag: swift4

如何在Swift 4中保持Realm List属性?

使用Swift 4和Realm 3.0.1,我想将Realm对象列表存储在父领域对象的属性中。 我遇到了以下问题: 在Swift 4中,应该被保存到Realm中的属性必须是@objc dynamic ,例如@objc dynamic var id: String = "" 。 但是,Realm的数组replacetypesList不能以这种方式存储: @objc dynamic var children: List<Child>? = nil @objc dynamic var children: List<Child>? = nil导致这个编译器错误: 属性不能被标记@objc,因为它的types不能在Objective-C中表示 更多的上下文,这里是一个完整的例子: final class Child: Object { @objc dynamic var name: String = "" } final class Parent: Object { // this fails to compile […]

在Swift4中,更换navigationItem.leftBarButtonItem将调整不需要的大小

UIBarButtonItem在使用帧和图像的不同值返回到VC时resize时遇到​​问题。 var selectedR = 1 var leftFrame = CGRect() var leftImage = UIImage() override func viewDidLoad() { super.viewDidLoad() if selectedR == 0 { leftFrame = CGRect(x: 0, y: 0, width: 33, height: 33) leftImage = UIImage(named: “pic-0”)! } else if selectedR == 1 { leftFrame = CGRect(x: 0, y: 0, width: 79, height: 33) leftImage […]

Swift 4标签属性

我从swift快速移动到swift 4.我有UILabels,我给非常具体的文本属性的标签。 当我正在初始化strokeTextAttributes的时候,我得到了“意外地发现了零,同时展开可选值”的错误。 我完全失去坦率。 在swift 3中,strokeTextAttributes是[String:Any],但是Swift 4抛出错误,直到我将它改变为下面的内容。 let strokeTextAttributes = [ NSAttributedStringKey.strokeColor.rawValue : UIColor.black, NSAttributedStringKey.foregroundColor : UIColor.white, NSAttributedStringKey.strokeWidth : -2.0, NSAttributedStringKey.font : UIFont.boldSystemFont(ofSize: 18) ] as! [NSAttributedStringKey : Any] chevronRightLabel.attributedText = NSMutableAttributedString(string: "0", attributes: strokeTextAttributes)

Swift 4添加手势:覆盖vs @objc

我正在寻找添加一个手势,我的观点如下: override func viewDidLoad() { super.viewDidLoad() < blah blah blah > // Add tap gesture let tap = UITapGestureRecognizer(target: self, action: #selector(handleTap)) myView.addGestureRecognizer(tap) } 但是,在Swift 4中,我的编译器给了我下面的错误: Argument of '#selector' refers to instance method 'handleTap()' that is not exposed to Objective-C build议添加@objc以将此实例方法公开给Objective-C。 实现这个(通过代码)的另一个select是覆盖touchesBegan()函数并使用它来处理tap。 我正在试图做这个'Swift'的方式,而不必带上Obj-C。 是否有一个纯粹的Swift方式来添加这个轻拍手势,而不使用@objc? 或者,这是添加此轻拍手势的正常和预期的方式?

Swift 4 – iOS 11search栏范围将不会显示,因为它应该

我有一个应用程序,它可以很好地工作,在iOS 10上没有任何问题,但是在iOS 11和Xcode Beta 5中,我有这个奇怪的问题,search栏的范围看起来像是从底部切下的。 (Xcode beta和iOS 11的所有版本都是一样的)如果有人能把我放在正确的方向,我真的很高兴。 谢谢 上面你可以看到当我按下汉堡包菜单button时看到的东西。 这里没有问题..search栏也有一个范围栏,当点击时显示。我没有设置它以编程方式显示。但我想这是它的默认行为时,范围button标题设置。 问题: 当我点击search栏input信息,我看到上面的屏幕。 在iOS 10上,我没有任何问题。 但是现在,在iOS 11中,无论我做什么,我都无法使它像iOS 10一样工作。search范围栏显示为从底部切下。 这是如何显示在iOS 10中,我希望它在iOS 11中。 屏幕的故事板视图 我在这里粘贴相关的代码。 class SlideMenuViewController: UIViewController,UITableViewDelegate,UITableViewDataSource,UISearchControllerDelegate,UIGestureRecognizerDelegate{ let searchController = UISearchController(searchResultsController: nil) @IBOutlet var sview: UIView! @IBOutlet var tableView: UITableView! override func viewWillAppear(_ animated: Bool) { //some non relevant code before this if sview.subviews .contains(searchController.searchBar) { […]

NSFetchedResultsController不能使用瞬态属性

使用Xcode8.3在Swift 3中正常工作 我有一个项目正在进行,其中有保存消息的核心数据。 它按照时间对邮件进行分类,并按照date分类。 就是这样: let request = NSFetchRequest(entityName: "Message") let sortDiscriptor = NSSortDescriptor(key: "time", ascending: true) request.sortDescriptors = [sortDiscriptor] fetchedResultsController = NSFetchedResultsController(fetchRequest: request, managedObjectContext: mainThreadMOC, sectionNameKeyPath: "sectionTitle", cacheName: nil) fetchedResultsController.delegate = self do { try fetchedResultsController.performFetch() } catch { fatalError("Failed to initialize FetchedResultsController: \(error)") } 这是暂时的财产: var sectionTitle: String? { //this is **transient** property […]

使用JSONEncoder将nil值编码为null

我正在使用Swift 4的JSONEncoder 。 我有一个可选属性的Codable结构,我想这个属性显示为null值生成的JSON数据时,值nil 。 但是, JSONEncoder会丢弃该属性,并不会将其添加到JSON输出中。 有没有办法configurationJSONEncoder以便它保留的关键,并将其设置为null在这种情况下? 例 下面的代码片段产生{"number":1} ,但我宁愿它给我{"string":null,"number":1} : struct Foo: Codable { var string: String? = nil var number: Int = 1 } let encoder = JSONEncoder() let data = try! encoder.encode(Foo()) print(String(data: data, encoding: .utf8)!)

从API中填充TableView中的CollectionView

我正在使用alamofire通过模型类的帮助从数组中获取数据。 现在我想在TableView中的CollectionView中显示这些数据。 所以传递数组来显示数据是一个问题,这里是一些代码,看看你是否能find问题。 告诉我,如果你想让我给你更多的信息 cellviewrowat的tableview if let cell = tableView.dequeueReusableCell(withIdentifier: "HeadlineRow", for: indexPath) as? HeadlineRow { let latest = self.latest[indexPath.section] cell.updateUI(latest: latest) return cell } tableviewcell类 var latestNews = [LatestNews]() func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell { if let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "HeadlineCell", for: indexPath) as? HeadlineCell { let latest = self.latestNews[indexPath.row] […]

如何检查在斯威夫特3或斯威夫特4的互联网连接?

我试图检查在斯威夫特3互联网连接,但代码不适合我。 class func isConnectedToNetwork() -> Bool { var zeroAddress = sockaddr_in(sin_len: 0, sin_family: 0, sin_port: 0, sin_addr: in_addr(s_addr: 0), sin_zero: (0, 0, 0, 0, 0, 0, 0, 0)) zeroAddress.sin_len = UInt8(MemoryLayout.size(ofValue: zeroAddress)) zeroAddress.sin_family = sa_family_t(AF_INET) let defaultRouteReachability = withUnsafePointer(&zeroAddress) { SCNetworkReachabilityCreateWithAddress(nil, UnsafePointer($0)).takeRetainedValue() } var flags: SCNetworkReachabilityFlags = SCNetworkReachabilityFlags(rawValue: UInt32(0)) if SCNetworkReachabilityGetFlags(defaultRouteReachability, &flags) == 0 { […]

键盘与Swift 4中的UITextField重叠

我正在尝试处理滚动的UITextField,以避免键盘重叠。 点击这里查看目前的输出我越来越 ] StoryBoard截图 。 我试着滚动视图,当我点击最后一个文本字段..密码字段。 当我点击密码字段,只有电子邮件字段,即第二个滚动。 第一个和最后一个字段没有滚动。 我怎样才能解决这个问题? ` // // ViewController.swift import UIKit class ViewController: UIViewController,UITextFieldDelegate { @IBOutlet weak var scrollView: UIScrollView! @IBOutlet weak var name: UITextField! @IBOutlet weak var email: UITextField! @IBOutlet weak var password: UITextField! override func viewDidLoad() { super.viewDidLoad() // Do any additional setup after loading the view, typically from […]