苹果型(类)方法的一个很好的解释在这里.
但是,他们的示例如下所示:
class SomeClass {
class func someTypeMethod() {
// type method implementation goes here
}
}
SomeClass.typeMethod()
Run Code Online (Sandbox Code Playgroud)
我看到这个完全相同的例子到处乱窜.
但是,我需要从我的类的一个实例中调用我的Type方法,而这似乎不是计算的.
我必须做错事,但我注意到Apple还没有支持Class Properties :(.我想知道我是否会去干井用水.
这是我尝试过的(在操场上):
class ClassA
{
class func staticMethod() -> String { return "STATIC" }
func dynamicMethod() -> String { return "DYNAMIC" }
func callBoth() -> ( dynamicRet:String, staticRet:String )
{
var dynamicRet:String = self.dynamicMethod()
var staticRet:String = ""
// staticRet = self.class.staticMethod() // Nope
// staticRet = class.staticMethod() // No way, Jose
// staticRet = ClassA.staticMethod(self) …
Run Code Online (Sandbox Code Playgroud) 我目前正在疯狂地挖掘所有的文档,并没有找到我正在寻找的东西.我怀疑这是真正的哦!回答.
我只需要在主包中找到活动的故事板,并想知道执行此操作的最佳方法.
这样我就可以使用它[UIStoryboard storyboardWithName:@"XXX" bundle:mainBundle]
来提取正在运行的故事板.
我知道如何通过打开成语来克服它,但我觉得这是一个... kludge.
这样做的正确方法是什么?
更新:
好.我找到了.
像往常一样,在Stack Overflow(官方Apple文档站点;)上.
这是我确定的代码:
UIStoryboard *st = [UIStoryboard storyboardWithName:[[NSBundle mainBundle].infoDictionary objectForKey:@"UIMainStoryboardFile"] bundle:[NSBundle mainBundle]];
Run Code Online (Sandbox Code Playgroud) 通常,我们被限制讨论 Apple 预发布的内容,但我已经看到很多 SwiftUI 的讨论,所以我怀疑这没关系;就这一次。
我正在学习其中一个教程(我这样做)。
我在“与 UIKit 交互”教程中的可滑动屏幕下方添加了一对按钮:https : //developer.apple.com/tutorials/swiftui/interface-with-uikit
这些是“下一个”和“上一个”按钮。当在一端或另一端时,相应的按钮会隐藏。我有那个工作正常。
我遇到的问题是访问由 PageViewController 表示的 UIPageViewController 实例。
我更改了 currentPage 属性(通过使 PageViewController 成为 UIPageViewController 的委托),但我需要强制 UIPageViewController 以编程方式更改。
我知道我可以通过重绘 PageView 主体来“蛮力”显示,反映一个新的 currentPage,但我不确定如何做到这一点。
struct PageView<Page: View>: View {
var viewControllers: [UIHostingController<Page>]
@State var currentPage = 0
init(_ views: [Page]) {
self.viewControllers = views.map { UIHostingController(rootView: $0) }
}
var body: some View {
VStack {
PageViewController(controllers: viewControllers, currentPage: $currentPage)
HStack(alignment: .center) {
Spacer()
if 0 < currentPage {
Button(action: {
self.prevPage()
}) …
Run Code Online (Sandbox Code Playgroud) 好.我环顾四周,没找到问题的确切答案.
我试图在单元测试中测试超时处理程序(而不是主程序).
问题似乎[NSRunLoop mainRunLoop]
是它没有像标准Run那样在单元测试中运行.
我以这种方式做我的超时:
NSTimer *pTimeoutHandler = [NSTimer
timerWithTimeInterval:2.0
target:self
selector:@selector(timeoutHandler:)
userInfo:nil
repeats:NO
];
[[NSRunLoop mainRunLoop] addTimer:pTimeoutHandler forMode:NSRunLoopCommonModes];
Run Code Online (Sandbox Code Playgroud)
这适用于标准运行.这是建议设置超时的方法.
但是,在测试运行中,这不起作用.timeoutHandler:(NSTimer*)timer
永远不会调用该例程.
看起来好像有什么东西在干扰运行循环.
有没有办法让我在运行和单元测试中都能使用超时?
所引用的答案均无效。Xcode 10.2发生了一些新变化
无论我使用Swift 4.2还是5,都会发生这种情况。
使用全新的未经编辑的命令行工具,它将立即发生。
您需要做的就是创建一个MacOS命令行工具,然后点击“运行”。
您立即收到此错误。
到目前为止,我还没有完成任何修复。
我很难将本地化应用程序.它需要本地化为波斯语(伊朗波斯语).不仅如此,当选择fa_IR作为本地化时,它需要使用Solar Calendar.
操作系统有一个波斯日历.我使用它没问题,但我需要知道已经选择了fa_IR本地化.为了增加对伤害的侮辱,我不能在美国测试这个地方,因为似乎AT&T不允许它作为本地化.我必须把它寄给伊朗,这是一个皇家PItA.
我有一段时间在运行时找到本地化的魔鬼.有很多东西可以访问bundle标志,但我找不到任何获取运行时信息的东西.
我在iOS编程方面非常绿,所以我仍然需要确定哪个M到RTFM.我一直在用许多关键词搜索文档,但无济于事.
任何人都可以帮助看似荒谬简单的问题吗?
好.当我输入问题时查看了各种答案,并没有看到列出的答案.
这似乎是一个基本的,根本性的问题,我必须做错事,但我被驱使疯了(实际上,并不是一个"驱动器".更多的是一个短推杆)试图找出我的错误.
我创建了一个可以在这里下载的测试项目(小项目).
无论如何,我在处理导入Swift的大型Objective-C SDK时遇到了这种情况.
一切都很好.直到...我尝试对C中声明的枚举进行比较.
显然,C枚举不会变成Swift枚举,但我无法弄清楚如何使用它们.
以下是您将在测试项目中看到的示例;
我有几个声明枚举的C文件:
#import <Foundation/Foundation.h>
typedef enum
{
StandardEnumType_Undef = 0xFF,
StandardEnumType_Value0 = 0x00,
StandardEnumType_Value1 = 0x01,
StandardEnumType_Value2 = 0x02
} StandardEnumType;
typedef NS_ENUM ( unsigned char, AppleEnumType )
{
AppleEnumType_Undef = 0xFF,
AppleEnumType_Value0 = 0x00,
AppleEnumType_Value1 = 0x01,
AppleEnumType_Value2 = 0x02
};
StandardEnumType translateIntToEnumValue ( int inIntValue );
int translateEnumValueToInt ( StandardEnumType inValue );
AppleEnumType translateIntToAppleEnumValue ( int inIntValue );
int translateAppleEnumValueToInt ( AppleEnumType inValue );
Run Code Online (Sandbox Code Playgroud)
所提到的功能几乎与它在锡上所说的完全相同.我不会包括他们.
我做了桥接标题和所有这些.
我试图在Swift应用程序的初始加载中使用它们: …
好.我已经看了上面的答案,我不认为我想要的是那里.我确实看到了这些:
XCode 4.1如何在项目树的Products文件夹中添加External Build System的结果
但我不认为他们是我需要的.
这是问题所在:
我有一个聚合目标,我为构建一个框架而创建.
它有魅力.但是,我无法将生成的框架视为目标产品(表现为无法拖入"产品"组).
我一直在研究设置,并且无法将结果视为目标的"产品".
我错过了什么?
我在这个答案中做了一些游戏,甚至向Apple提出了一个RADAR问题,要求提供更好的文件记录(蟋蟀唧唧喳喳).
问题是:字符串间隔如何工作?
如果你看看我操场上的第367行,你会发现我在乱用字符串间隔.
我将String的东西提取到一个较小的游乐场:
// String Intervals
// These are odd. Looks like it is using the ASCII values. I should experiment with Unicode, and see where we go...
let aThroughFClosed:ClosedInterval<String> = "A"..."F"
let dThroughQClosed:ClosedInterval = "D"..."Q"
let mThroughSClosed:ClosedInterval = "M"..."S"
let tThroughWClosed:ClosedInterval = "T"..."W"
let whiskeyTangoFoxtrot1 = "QED"..."WTF" /* Not sure what will happen when I start working with this... */
let aThroughHHalfOpen:HalfOpenInterval<String> = "A"..<"H"
let dThroughRHalfOpen:HalfOpenInterval = "D"..<"R"
let mThroughTHalfOpen:HalfOpenInterval = "M"..<"T"
let tThroughXHalfOpen:HalfOpenInterval = "T"..<"X" …
Run Code Online (Sandbox Code Playgroud) 哎呀。
我有一个从头开始重写的应用程序。第一个版本有一个 Watch 应用程序,我想从计算中获取 Watch 应用程序的内容,因此我删除了项目依赖项和“嵌入手表内容”构建阶段。
没问题...只不过现在是时候再次开始开发 Watch 应用了。
我可以添加依赖项,没问题,但“嵌入观看内容”阶段似乎不适合我。
我怀疑这只是一个“复制文件”阶段,已重命名,但我一定没有正确实现它。
在现有目标中建立新的“嵌入观看内容”阶段的正确方法是什么?
swift ×6
ios ×5
xcode ×2
apple-watch ×1
class ×1
dependencies ×1
enums ×1
intervals ×1
iphone ×1
localization ×1
macos ×1
methods ×1
objective-c ×1
product ×1
runtime ×1
storyboard ×1
string ×1
swiftui ×1
target ×1
types ×1
unit-testing ×1