草庐IT

swift - CoreData transient 属性上下文中可选的语义

如果将核心数据中的transient属性设置为可选或非可选,会有什么区别。通常当您将一个实体设置为可选时,它允许拥有该属性的实体在该属性设置为null的情况下存储。但在transient属性的情况下,它们实际上并没有被存储。那么将transient属性设置为可选有什么作用吗?如果使用可选的非transient属性计算,是否需要将transient属性设置为可选?欢迎任何见解。 最佳答案 如果我没有将transient属性设置为可选,我会收到以下错误:CoreDataSaveError(NSValidationErrorKey,Coc

ios - 与 ios swift 本地数据库和服务器同步数据

我正在尝试构建一个使用SQLITE并将其同步到我的PHP后端服务器的iOSswift应用程序。我可以构建从服务器读取和写入数据的API。我可以从发出HTTP请求的服务器快速读取和写入数据。我想在这里完成的是:将数据保存到本地数据库并将其同步到服务器数据库,本地数据库是用户特定的,服务器数据库包含所有用户数据。本地数据库--------------------------|maintitem|duedate||abc|29-3-2018|DNA|24-1-2017|boy|17-2-2017--------------------------服务器数据库-----------------

ios - 在 swift3 中从 AppDelegate 调用函数

我正在使用OneSignal处理我应用中的通知。这是在AppDelegate.swift中启动的,其中有一个处理接收到的应用程序的函数:letnotificationReceivedBlock:OSHandleNotificationReceivedBlock={notificationinprint("ReceivedNotification:\(notification!.payload.body)")}然后我有一个带有5个选项卡的TabViewController,每个选项卡的navigationItem都有一个UINavigationBarButton,它将您发送到消息View

swift - 对象是 nil,尽管它是在 init 中设置的

我有一个名为navigator的对象,我在init中设置了它。我打开它以确保它已设置好。但是,当IBAction函数linkBut​​tonClicked被调用并尝试使用导航器时,我得到一个nil异常。为什么?classHomeCollectionViewCell:UICollectionViewCell{letappDelegate:AppDelegate!letnavigator:Navigator!@IBOutletweakvarlinkButton:UIButton!vardestinationView:String?varparentViewController:UIView

iOS Swift 3 - 如何保存可以拉到任何 View Controller 的数据

我正在制作一款游戏,其中每个技能都有自己的水平和经验,具体取决于玩家对它们的训练程度。它还在银行中存储了诸如金钱和元素之类的东西。我应该在哪里保存这些项目,以便您可以从任何ViewController访问它,以便在您关闭和打开游戏时保存它?我已经决定尝试使用UserDefualts,但我不确定我做错了什么。有人可以解释一下我是否想要一个名为硬币的变量并有一个标签显示这些硬币从0开始,每次单击按钮时硬币都会增加1。然后还可以关闭游戏或女巫观看次数和代币是否与关闭前保持一致? 最佳答案 首先你应该定义游戏数据是否敏感。如果不敏感,请尝试

swift - `?` 在 Xcode 8.3.2 的 Swift 编译器中导致段错误

我有这行Swift可以毫无问题地编译letlayoutSettings=tryLayoutSettings.deserialize(params:layoutSettingsParamsasDictionary)从Xcode8.3.2开始我得到错误SwiftCompilerErrorCommandfailedduetosignal:Segmentationfault:11如果我删除代码行末尾的?,它可以毫无问题地编译。如何在不使编译器崩溃的情况下使用可空类型? 最佳答案 AnyObject和AnyObject?不是一回事。AnyOb

Swift:将 AnyObject 转换为 Float 失败

letjson=["left":18,"deadline":"May10","progress":0.6]as[String:AnyObject]letss=json["progress"]as?Floatletsss=json["progress"]as?Doubleprint("ss=\(ss)\nsss=\(sss)")我不知道为什么ss显示nil而sss显示0.599999998。为什么强制转换为Float会得到nil?你们有什么方法可以让我得到正确的结果吗? 最佳答案 0.6是一个Double文字值。因此,您不能将其转换为

swift - 如何比较两个没有原始类型的枚举实例?

这个问题在这里已经有了答案:HowtotestequalityofSwiftenumswithassociatedvalues(14个答案)关闭5年前。给定:enumExample{caseStep1caseStep2(data:String)}和:leta:Example=.Step1letb:Example=.Step2(data:"hi")我如何使它工作?print(a==b)//ERROR:Binaryoperator'=='cannotbeappliedtotwo'Example'operands请注意,我不能放弃自定义枚举(它不能包含原始值)

ios - Swift 中的时间戳

我正在使用这段代码快速确定当前时间letcurrentDate=Date().timeIntervalSince1970*1000结果是这样的1493199752604.24获取的值是毫秒对吧?值里面的.是什么?我需要确定两个这样的日期之间的时差是否等于或大于2小时。if(currentDate-oldDate>=7200000){//dosomething}这段代码正确吗? 最佳答案 尝试利用Swift的更多优势。尝试使用dateComponents获取时间差。letcalendar=NSCalendar.currentletho

swift - 使用信号量的 XCTest 单异步设置

我正致力于通过Alamofire测试API。我需要对服务器进行一次调用以准备集成测试。完成后,我就可以开始运行测试了。每次测试都会运行通常的overridesetUp(),所以我不想那样做。因此,我选择覆盖classsetUp(),如下所述:https://developer.apple.com/reference/xctest/xctestcase一切都很好,但是现在,我不能再使用标准的waitForExpectations。(在classoverridesetUp())我收到几个编译器错误,告诉我我不再调用相同的waitForExpectations因为我在类方法中,而不是测试用例