小编Chr*_*all的帖子

在实例方法中调用类型方法

苹果型(类)方法的一个很好的解释在这里.

但是,他们的示例如下所示:

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)

methods types class ios swift

59
推荐指数
2
解决办法
4万
查看次数

UIStoryboard:获取活动故事板的正确方法是什么?

我目前正在疯狂地挖掘所有的文档,并没有找到我正在寻找的东西.我怀疑这是真正的哦!回答.

我只需要在主包中找到活动的故事板,并想知道执行此操作的最佳方法.

这样我就可以使用它[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)

runtime storyboard ios

50
推荐指数
3
解决办法
4万
查看次数

SwiftUI:强制更新

通常,我们被限制讨论 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)

swift swiftui

25
推荐指数
3
解决办法
3万
查看次数

XOSest中的IOS -NSRunLoop:如何在单元测试中运行循环?

好.我环顾四周,没找到问题的确切答案.

我试图在单元测试中测试超时处理程序(而不是主程序).

问题似乎[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永远不会调用该例程.

看起来好像有什么东西在干扰运行循环.

有没有办法让我在运行和单元测试中都能使用超时?

unit-testing ios

8
推荐指数
1
解决办法
4685
查看次数

dyld:库未加载:@ rpath / libswiftCore.dylib问题与新的Xcode(10.2)

所引用的答案均无效。Xcode 10.2发生了一些新变化

无论我使用Swift 4.2还是5,都会发生这种情况。

使用全新的未经编辑的命令行工具,它将立即发生。

您需要做的就是创建一个MacOS命令行工具,然后点击“运行”。

您立即收到此错误。

到目前为止,我还没有完成任何修复。

macos xcode swift

8
推荐指数
1
解决办法
5271
查看次数

iPhone/iOS:如何判断手机在运行时使用的本地化?

我很难将本地化应用程序.它需要本地化为波斯语(伊朗波斯语).不仅如此,当选择fa_IR作为本地化时,它需要使用Solar Calendar.

操作系统有一个波斯日历.我使用它没问题,但我需要知道已经选择了fa_IR本地化.为了增加对伤害的侮辱,我不能在美国测试这个地方,因为似乎AT&T不允许它作为本地化.我必须把它寄给伊朗,这是一个皇家PItA.

我有一段时间在运行时找到本地化的魔鬼.有很多东西可以访问bundle标志,但我找不到任何获取运行时信息的东西.

我在iOS编程方面非常绿,所以我仍然需要确定哪个M到RTFM.我一直在用许多关键词搜索文档,但无济于事.

任何人都可以帮助看似荒谬简单的问题吗?

iphone localization ios

6
推荐指数
2
解决办法
1499
查看次数

Swift:麻烦使用在Objective-C中声明的枚举,在Swift中

好.当我输入问题时查看了各种答案,并没有看到列出的答案.

这似乎是一个基本的,根本性的问题,我必须做错事,但我被驱使疯了(实际上,并不是一个"驱动器".更多的是一个短推杆)试图找出我的错误.

我创建了一个可以在这里下载的测试项目(小项目).

无论如何,我在处理导入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应用程序的初始加载中使用它们: …

enums objective-c swift

6
推荐指数
1
解决办法
2041
查看次数

如何将Xcode聚合目标的结果添加到"产品"组?

好.我已经看了上面的答案,我不认为我想要的是那里.我确实看到了这些:

XCode 4.1如何在项目树的Products文件夹中添加External Build System的结果

Xcode:使用新产品名称更新项目产品组

但我不认为他们是我需要的.

这是问题所在:

我有一个聚合目标,我为构建一个框架而创建.

它有魅力.但是,我无法将生成的框架视为目标产品(表现为无法拖入"产品"组).

我一直在研究设置,并且无法将结果视为目标的"产品".

我错过了什么?

xcode dependencies product target

6
推荐指数
0
解决办法
344
查看次数

字符串间隔如何工作?

我在这个答案中做了一些游戏,甚至向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)

string intervals swift

5
推荐指数
1
解决办法
221
查看次数

需要向我的 iOS 应用程序添加“嵌入观看内容”构建阶段

哎呀。

我有一个从头开始重写的应用程序。第一个版本有一个 Watch 应用程序,我想从计算中获取 Watch 应用程序的内容,因此我删除了项目依赖项和“嵌入手表内容”构建阶段。

没问题...只不过现在是时候再次开始开发 Watch 应用了。

我可以添加依赖项,没问题,但“嵌入观看内容”阶段似乎不适合我。

我怀疑这只是一个“复制文件”阶段,已重命名,但我一定没有正确实现它。

在现有目标中建立新的“嵌入观看内容”阶段的正确方法是什么?

ios swift apple-watch

5
推荐指数
1
解决办法
1232
查看次数