草庐IT

ios - 在 iOS 应用程序中,如何检测用户按下了其外部键盘上的箭头键之一?

我有几个iOS应用程序,它们呈现固有的线性组织信息,允许用户使用屏幕控件在数据中前后移动。我想让使用键盘底座或配对蓝牙键盘的用户也可以使用箭头键来回移动。由于应用程序是全屏的,因此没有显示屏幕键盘作为副作用的风险对用户体验非常重要。我在Apple的文档中找不到允许我执行此操作的API;但我不能确定我是否使用了正确的搜索词。有哪些API可以让我实现这一目标?更新:我已将此作为对Apple'sbugreportingsite的增强提出来. 最佳答案 HowcanIrespondtoexternalkeyboardarrowkeys?中的

ios - NSPredicate 检查 NSArray 如果对象具有多个 ID 之一

有点难以解释,但我正在尝试使用NSPredicate通过ids过滤具有自定义NSManagedObject的数组。我有一个可以发送更新、删除或添加新对象的服务器,我需要控制JSON文件中的这些对象是否已经存在,如果存在则更新它们,如果不存在则插入到核心数据。我现在正在使用这个谓词:NSPredicate*predicate=[NSPredicatepredicateWithFormat:@"storeId!=%@",[jsonFilevalueForKey:@"Id"];其中jsonFile包含未解析的Store对象。但是有了这个谓词,它会给我一个巨大的数组,因为一个id将不同于一些s

swift - 返回两个可能的类实例之一

我读到,如果可能的话,不建议使用Any或AnyObject。我的情况是,我有一个类负责与服务器通信并将数据返回到应用程序,看起来像这个粗略的例子:classApi{init(){}funclogin(username:String,password:String)->User?{if(username=="johndoe"){letuser=User(id:"1234567890",firstName:"JohnDoe")returnuser}else{returnnil}}}我想返回User或Error对象而不是nil。我应该用AnyObject替换login函数的返回类,以便我可以

swift - 以更面向对象的方式根据三种选择之一执行操作

我需要根据用户可以选择的三个选项之一执行计算,我还没有创建任何实际代码,因为我不确定使用哪种方法比我的意大利面条代码更OOP中更常见下面。根据以下代码跟踪measurementType的最常用方法是什么?我从未在任何语言中使用过枚举,我想知道这是否适合他们。有什么建议吗?varmeasurementType:String=""letpounds="Pounds"letkilograms="Kilograms"letquantity="Quantity"//UserselectionmeasurementType=pounds//Performcalculationbasedonuser

xcode - 框架在我的目标之一(屏幕保护程序)中不起作用

我有一个包含2个目标的XCodeSwift项目,一个传统应用程序和一个屏幕保护程序。我想在两者中都使用一个框架(我尝试过至少2个框架但没有成功)。在应用程序中它们工作正常但在屏幕保护程序中,尽管我能够编译(我有一个带有适当导入的桥接文件并且我复制并链接了框架)当屏幕保护程序运行时,它在控制台中出现此错误而崩溃:Jul116:33:15ironbird.localScreenSaverEngine[60006]:Errorloading/Users/juanjo/Library/ScreenSavers/Ninja.saver/Contents/MacOS/Ninja:dlopen(/U

swift - 变量(枚举?)在 Swift 2 中持有两种类型之一

在UIViewController子类中需要声明一个名为webView的变量,它可以是UIWebView或WKWebView类型(取决于iOS版本)。是否有比以下选项之一更好的方法(也许使用枚举?):声明UIView类型的变量,然后在每次需要访问它时有条件地转换为这两种类型不是在公共(public)父UIViewController父类(superclass)中声明变量,而是在两个特定的UIViewController子类中两次声明特定类型的变量?感觉它违反了“不要重复自己”/DRY原则。 最佳答案 您可以定义一个协议(protoc

ios - 有没有一种有效的方法可以快速地将 float 舍入到最近的百分之一位置?

我想快速舍入一个float,但我发现的所有内容都告诉您将其转换为字符串。有没有办法转换float本身?示例:14.14910001->14.15 最佳答案 您可以使用“比例因子”为100的round():letx=14.14910001lety=round(100.0*x)/100.0println(y)//14.15但是你应该注意二进制float不能准确地表示一个像14.15这样的数字,所以这将给出最接近的Double14.15的近似值。 关于ios-有没有一种有效的方法可以快速地将f

xcode - 类在/Users/... 和/Applications/... 中实现。使用两个填充之一。哪个是未定义的

我知道这是使用单元测试时的常见错误消息,但我没有这样做。这是我的做法:我创建了一个新的命令行工具项目我在print("Hello,World!")行放置了一个断点我在控制台中输入类似po3+3的内容然后我收到这条消息:objc[929]:Class_TtCs18_EmptyArrayStorageisimplementedinboth/Users/tim/Library/Developer/Xcode/DerivedData/TestProject-hlekdhnmnvllzganostmsaamwjje/Build/Products/Debug/TestProjectand/Appl

swift - 扩展协议(protocol)以满足多个约束之一

我想扩展协议(protocol)以满足多个约束之一。我知道如何使用(,)来满足多个约束条件,但这会符合所有约束条件。例子:protocolAbc{...}protocolxyz{...}protocolmy{...}extenstionAbcwhereSelf:xyz,Self:my{...}我希望Abc符合xyz或my。 最佳答案 我认为您可以使用通用协议(protocol)来执行此操作:protocolCommon{}protocolAbc{}protocolxyz:Common{}protocolmy:Common{}exte

swift - 使用 Swift 将实时秒表计时器格式化为百分之一

我有一个应用以厘秒(0.01秒)更新间隔使用NSTimer,以字符串格式显示正在运行的秒表00:00.00(mm:ss.SS)。(基本克隆iOS内置秒表,融入实时运动计时数学题,future可能需要毫秒精度)我使用(误用?)NSTimer来强制更新UILabel。如果用户按下开始,这是用于开始重复该功能的NSTimer代码:displayOnlyTimer=NSTimer.scheduledTimerWithTimeInterval(0.01,target:self,selector:Selector("display"),userInfo:nil,repeats:true)下面是上面