Tag: swift3

使用不同的SWIFT文件相同的ViewController?

我在我的应用程序中有一个布局保持不变,除了图像会根据在上一个视图中按下哪个button而有所不同。 我想要做的是设置它,如果btn1被按下的用户它进入下一个视图,但然后VCfile1.swift被使用,如果用户按btn2然后他被带到下一个视图和VCFile2.swift被使用在storyboard中创build相同的viewcontroller。 我怎么能做到这一点? (我不知道这是否是正确的方法,但如果不是,请build议) Swift 3,Xcode 8

Integer的IOS Swift值没有被保存

我正在学习Swift,但在ViewDidLoad中有一个Inttypes的variables(追随者),我将其值设置为默认值0。 然后我做一个Json请求返回一个数组,我设置的值的关注者的任何数字,它是在JSON数组是788。 然而,当我做一个打印后,价值保持在0这是我的代码,它会更有意义 override func viewDidLoad() { super.viewDidLoad() var followers = 0 // Sent HTTP Request sessionn.dataTask(with:requestt, completionHandler: {(data, response, error) in if error != nil { // print(error) } else { do { let parsedData = try JSONSerialization.jsonObject(with: data!, options: .allowFragments) as! [String:Any] if let Profiles = parsedData["data"] as! [AnyObject]? { for Profiles in […]

Swift中的“暂停”游戏

我在Swift中创build了一个涉及怪物出现的游戏。 基于定时器,怪物出现并消失,使用这样的东西: func RunAfterDelay(_ delay: TimeInterval, block: @escaping ()->()) { let time = DispatchTime.now() + Double(Int64(delay * Double(NSEC_PER_SEC))) / Double(NSEC_PER_SEC) DispatchQueue.main.asyncAfter(deadline: time, execute: block) } 然后我会像这样调用它(例如在2秒后产生): ///Spawn Monster RunAfterDelay(2) { [unowned self] in self.spawnMonster() } 然后我做一些类似的隐藏(x秒后,我把这个怪物去掉了)。 所以我在屏幕上方创build了一个设置图标,当你点击它的时候,一个巨大的矩形窗口会改变游戏设置,但是问题自然就是在后台产生的怪物。 如果我把玩家甩到另一个屏幕上,我相信我会失去我所有的游戏状态,如果没有全部开始(玩家可能处于游戏中),就不能回到游戏状态。 有没有办法告诉我在上面创build的所有游戏计时器,即 DispatchQueue.main.asyncAfter(deadline: time, execute: block) 当我这样说的时候暂停和恢复? 我想所有定时器都可以这样做(如果没有办法标记和暂停某些定时器的话)。 谢谢!

如何在另一个视图控制器的顶部滑动视图控制器?

我有一个表视图控制器和另一个视图控制器。 现在我的要求是,当我滑动视图控制器时,我需要滑动一半的表视图控制器在另一个视图控制器。 我可以显示的图像是这样的: 是否有可能通过使用Swipegesture来实现这一点。 如果可能我怎么能在Swift3中做到这一点?

字典错误:模糊引用成员'+'

我有一个快速3方法下面的代码: let dict = ["A": 1, "B": 2, "C": 3] let sum = dict["A"]! + dict["B"]! + dict["C"]! 该代码不能编译,因为Ambiguous reference to member '+'错误的Ambiguous reference to member '+' 。 但是,如果我尝试添加只有两个元素它编译和按预期工作。 let dict = ["A": 1, "B": 2, "C": 3] let sum = dict["A"]! + dict["B"]! 正常工作。 我错过了语言应该如何工作?

iOS – 在堆栈视图内以编程方式添加垂直线

我试图添加垂直线,堆栈视图内的标签之间所有编程。 所需的完成将是这样的形象: 我可以添加标签,全部用期望的间距; 我可以添加水平线,但我不知道如何添加中间的分隔符垂直线。 我想这样做: let stackView = UIStackView(arrangedSubviews: [label1, verticalLine, label2, verticalLine, label3]) 任何提示? 谢谢

input'Any?' 没有下标成员

我试图检索电子邮件ID后fblogin在我的应用程序。 但是,当我尝试从结果中获取值时,出现错误。 错误是:inputType 'Any?' has no subscript members Type 'Any?' has no subscript members 。 func fetchProfile() { print("Fetch Profile") let parameters = ["fields": "email, first_name, last_name, picture.type(large)"] FBSDKGraphRequest(graphPath: "me", parameters: parameters).start { (connection, result, error) in let email = result["email"] as? String //Type 'Any?' has no subscript members error occurs here. } }

如何在Core Data中使用fetchRequest谓词

我将联系人标识符从联系人表视图控制器传递到另一个位置表视图控制器。 所以我定义了一个委托ContactSelectionDelegate,并在Location tableview控制器中实现了方法userSelectedContact,并获取contactIdentifierString 我正在search数据库以查找contactIdentifierString的匹配项,并查找另一个属性提供程序名称的值。 这涉及到search整个数据库。 是否有更快的方式分配一个谓词到上下文fetchRequest。 我认为这将是更快,更less的代码行。 有人可以build议如何使用联系fetchRequest谓词? ContactTableViewController代码: protocol ContactSelectionDelegate{ func userSelectedContact(contactIdentifier:NSString) } class ContactTableViewController: UITableViewController { var delegate:ContactSelectionDelegate? = nil override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { if (delegate != nil){ let contactDict:NSDictionary = allContacts.object(at: indexPath.row) as! NSDictionary let identifier = contactDict.object(forKey: "uniqueId") delegate!.userSelectedContact(contactIdentifier: identifier as! NSString) self.navigationController!.popViewController(animated: true) } } […]

Firebase崩溃无法读取

阅读FireBase崩溃报告时遇到问题,我的报告如下所示: 我已经按照这些说明来表示堆栈跟踪,得到了相同的结果。 我正在使用Xcode 8 我的应用程序是在Swift 3中制作的 已经写在我的appDelegate.didFinishLaunchingWithOptions方法“FIRApp.configure()”,确实使它崩溃,deattach debbuger,修复错误,重新运行应用程序,得到消息“崩溃成功上传”,等等… 我正在使用pod(pod'Firebase'和pod'Firebase / Crash') 我在FireBase控制台看到我的事件和崩溃(只是不可读) 在构build时自动为脚本安装脚本(请参阅图像): 已经下载的FireBase提供的例子(崩溃的例子不包括自动为符号的脚本) 已经遵循这个解决scheme(没有工作): 链接1 LINK2 和其他许多人。 已经访问了过去6个月的链接在stackoverflow和谷歌组与这个问题。 没有任何工作,请帮助! 更新#1:我收到来自firebase-support@google.com的电子邮件,内容是: 重置您的OAuth凭据 没有工作,也一直在testing脚本和上传是正确的,我开始认为是一个Firebase的错误

如何检测AVPlayer竟然开始快速播放

你好,我已经把我的UISlider最小值设置为0.00。 然后我以这种方式设置它的最大值。 self.viewPlayer.layer.addSublayer(playerLayer) let duration : CMTime = avPlayer.avPlayer.currentItem!.asset.duration let seconds : Float64 = CMTimeGetSeconds(duration) sliderBar.maximumValue=Float(seconds) sliderBar!.isContinuous = false sliderBar!.tintColor = UIColor.green 但是我得到这个例外 *** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Attempting to set a slider's minimumValue (0.000000) to be larger than the maximumValue (nan)' enter code here 我知道prepareForPlay()后真正播放它需要一些时间才能真正播放video。 那么我怎样才能检测到玩家真正开始播放video? 请帮帮我。 谢谢