在Interface Builder中使用generics类作为自定义视图

我有一个UIButton的自定义子类: import UIKit @IBDesignable class MyButton: UIButton { var array : [String]? } 这是IBDesignable,我已经将它设置为我的故事板中button之一的自定义类。 我想使它通用,使数组不必是一个string对象。 所以,我试过这个: import UIKit @IBDesignable class MyButton<T>: UIButton { var array : [T]? } 但是,我不确定如何将此设置为IB中的类。 我试着把MyButton<String>或MyButton<Int> ,但接口生成器只是删除尖括号部分,并得到以下编译错误: Command /Applications/Xcode6-Beta4.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/swift failed with exit code 254 有没有办法使用通用的自定义类,或者不支持?

删除数组中的重复对象

我有一个包含我的Post对象的数组。 每个Post都有一个id属性。 有没有一种更有效的方法来find我的数组中重复的邮政编码比 for post1 in posts { for post2 in posts { if post1.id == post2.id { posts.removeObject(post2) } } }

iOS通用设备应用与SpriteKit,如何缩放所有视图的节点?

我想创build一个横向应用程序是通用的 ,以便Sprite节点按比例缩放任何视图大小运行的应用程序。 我想要一个完全程序化的解决scheme,因为我不喜欢IB。 我的游戏非常简单,我不需要任何滚动或缩放,所以整个游戏将始终存在并占据整个视图。 我在寻找的可能是改变场景的大小,以适应视图? 如果是这样,你能解释一下,因为我试图改变我的视图控制器的这一部分 if let scene = GameScene(fileNamed:"GameScene") 成为构造函数的方法,把尺寸作为参数,但Xcode不喜欢这一点。 我试过的东西 使用self.view.bounds.width / height的分数。 这通常会使所有的iPhone看起来不错,但在iPad上延伸和扭曲节点以及周围的边框。 在所有四种types中改变scaleMode。 我想保持良好的实践和感觉.AspectFill(默认)是我应该使我的应用程序的工作,但开放的build议。 注意; 我不想在任何设备上出现黑边,只是按比例显示/缩放整个视图。 应用程序化约束。 现在我对这个还比较陌生,完全不了解约束条件,但是我从RayWenderlich那里看到的任何教程都没有提到关于节点约束的教程,所以我没有深入研究这个问题。 使用这样的方法来转换点之间的点。 这实际上对于节点的定位非常有效,如果可能的话,我希望这个方法能够解决,但是我仍然有节点大小的问题。 另外当我用这种方法为iPad构build视图似乎开始作为肖像和节点看起来不错,但我必须手动切换到风景和精灵和视图边界再次弄乱。 这里的方法是: func convert(point: CGPoint)->CGPoint { return self.view!.convertPoint(CGPoint(x: point.x, y:self.view!.frame.height-point.y), toScene:self) } 在RW和互联网上的其他地方无数的video教程。 提前致谢! 我感谢帮助。 我知道这个话题很奇怪,因为很多人对此提出质疑,但是每个人的情况似乎都不一样,以至于一个解决scheme并不适合所有人。

如何在应用程序运行之间在本地检测iPhone用户的时钟提升?

休闲游戏中常见的一个漏洞就是人为地推动系统时钟在游戏中跳跃前进。 iOS设备上的应用程序如何检测此类用户时钟进度? 不得涉及networking通信 时钟提前时,不得假定应用程序处于打开状态(正在运行或暂停) 必须检测时钟前进,检测时钟回滚是不够的 理想情况下,该解决scheme可以防止重新启动,但这不是必需的。

防止在iOS应用中捕获屏幕

为了安全起见,我需要防止我的应用程序的用户抓屏。 我显示的内容是保密的,不应该复制到设备上。 我看到堆栈溢出,但Android的一个答案 。 在iOS中可能以某种方式防止屏幕捕获? 虽然通过点击几下button将截图捕获到图库中对于用户来说是非常有用的特征,但是对于防止这种情况的需求也是有限的。 任何指针?

如何确定何时在ios上更改设置

我使用标准的root.plist方法为iPhone创build了一个自定义设置。 我想知道是否有一种方法来确定当用户更改我的应用程序中的这些设置…

preferredInterfaceOrientationForPresentation必须返回支持的接口方向

此错误没有任何意义,因为支持的方向返回首选方向UIInterfaceOrientationLandscapeRight //iOS6 -(BOOL)shouldAutorotate { return NO; } -(NSUInteger)supportedInterfaceOrientations { return (UIInterfaceOrientationLandscapeRight | UIInterfaceOrientationLandscapeLeft); } – (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation { return UIInterfaceOrientationLandscapeRight; } 错误: 由于未捕获exception“UIApplicationInvalidInterfaceOrientation”而终止应用程序,原因是:“preferredInterfaceOrientationForPresentation必须返回支持的界面方向!

如何在基于WebKit的应用程序中启用本地存储?

我有一个embeddedWebKit WebView的Cocoa / Objective-C应用程序。 我需要打开数据库支持和本地存储。 我知道这是可以做到的 – 我已经在Safari上工作了 – 但我找不到如何在我自己的应用程序中设置的例子。 我发现这个(未答复的)SO问题提供了一个例子,但是,正如原来的海报所提到的,这个问题不起作用。 事实上,他使用的方法(setDatabasesEnabled,setLocalStorageEnabled)没有在我的WebKit.framework(Xcode 3.2.5)中定义,虽然它们似乎存在,如果我自己定义它们。 任何人都可以提供一个如何启用本地数据库存储为基于WebKit的cocoa应用程序的例子吗? 非常感谢! 更新:我有一些工作…我被“数据库”与“本地存储”混淆,这显然是完全不同的东西。 以下是可用的代码: WebPreferences* prefs = [webView preferences]; [prefs _setLocalStorageDatabasePath:@"~/Library/Application Support/MyApp"]; [prefs setLocalStorageEnabled:YES]; 所以,这工作,但它需要私人方法_setLocalStorageDatabasePath,这意味着没有App Store的我。 所以我现在修改的问题是:有没有办法使这个工作, 而不使用私人方法? 我在这个答案中find了WebDatabaseDirectory首选项 ,它控制着数据库的位置 。 但是我找不到源中任何位置的本地存储的相应密钥。 或者有没有办法让我强制本地存储使用数据库,所以WebDatabaseDirectory的关键? 有任何想法吗?

通过将具有匹配的id号的对象分组来重buildNSArray?

我有一个NSArray,数组中的每个对象都有一个groupId和一个名字。 每个对象都是唯一的,但是有许多具有相同的groupId。 有没有一种方法,我可以拆分数组,并重build它,以便名称被分组到一个单一的对象与相应的groubId? 这是数组目前的样子: 2013-03-12 20:50:05.572 appName[4102:702] the array: ( { groupId = 1; name = "Dan"; }, { groupId = 1; name = "Matt"; }, { groupId = 2; name = "Steve"; }, { groupId = 2; name = "Mike"; }, { groupId = 3; name = "John"; }, { groupId = 4; name […]

计数标志表情符号时,Swift countElements()返回不正确的值

let str1 = "🇩🇪🇩🇪🇩🇪🇩🇪🇩🇪" let str2 = "🇩🇪.🇩🇪.🇩🇪.🇩🇪.🇩🇪." println("\(countElements(str1)), \(countElements(str2))") 结果:1,10 但不应该有5个元素? 该错误似乎只发生在我使用标志表情符号时。