小编Ger*_*tan的帖子

在我的 iPhone 上查找应用程序的 URL 方案

苹果地图无法提供路线时,可以打开路线应用:

显示路由应用程序的 Apple 地图

我想从我的应用程序中打开其中一些应用程序。我知道我必须将要打开的每个应用程序列入白名单。这不是问题。

如何找出安装在我的 iPhone 上的那些应用程序的 url 方案?

一种想法是通过 iTunes 和应用程序的 info.plist 进行备份。在这个 plist 中,应该使用 cfbundleurlschemes 键定义 url 方案。

我想我在备份中找到了这样的应用程序,但我不知道如何提取文件以获取 info.plist 文件。添加 .zip 并解压缩不起作用。

也欢迎其他获取 URL 方案的方法,尤其是获取应用程序 URL 方案的示例参数的方法。所以看看 Apple Maps 如何打开一个特定的路由应用程序会很好。

是的,我知道如何打开 Google 地图。我想知道如何打开那些找不到文档的文件。

那么如何在我的 iPhone 上找出路由应用程序的 URL 方案呢?

有一个答案建议提取 .ipa 文件,但不再有 iOSA 11 的 .ipa 文件。

iphone google-maps url-scheme ios apple-maps

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

Xcode 10.2 将多个目标转换为 Swift 5:尝试编译一些不属于目标的类

我有一个具有多个目标的 iOS Swift 项目。

将第一个目标转换为 Swift 5 很容易。

将第二个目标转换为 Swift 5,Xcode 10.2 尝试编译明确仅存在于第一个目标中的文件并失败(因为它没有编译第一个目标的所有文件并抱怨未解析的标识符)。

我该怎么做才能让 Xcode 只编译那些在转换为 Swift 5 时属于目标的文件?

如何将我的项目转换为 Swift 5?

清理 Build 文件夹并重新启动 Xcode 10.2 没有帮助。

xcode swift swift5

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

Swift / SwiftUI:为什么我不能覆盖返回一些 View 的方法?

在下面的例子中

import SwiftUI

class AbstractOverride {
    open func configurationView() -> AnyView {
        if Features.TEST_VERSION {
            return AnyView(Text("override configurationView()"))
        } else {
            return AnyView(EmptyView())
        }
    }
    
    open func someConfigurationView() -> some View {
        if Features.TEST_VERSION {
            return AnyView(Text("override someConfigurationView()"))
        } else {
            return AnyView(EmptyView())
        }
    }

}

class SubclassOverride: AbstractOverride {
    override func configurationView() -> AnyView { // no compiler error
        return AnyView(Text("Test"))
    }

    override func someConfigurationView() -> some View { // compiler error "Method does not override any method from …
Run Code Online (Sandbox Code Playgroud)

overriding swift swiftui

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

objc_copyClassList:更新到 iOS 13.4 / XCode 11.4 后崩溃 EXC_BAD_INSTRUCTION

更新到 iOS 13.4 / XCode 11.4 后

这段代码

func getSubclassInfos() -> [ClassInfo] {
    let superObject = CityModel.self
    let superClassInfo = ClassInfo(superObject)

    var subclassList = [ClassInfo]()
    var count = UInt32(0)
    guard let classList = objc_copyClassList(&count) else {
        return subclassList
    }
    for i in 0..<Int(count) {
        let clazz = classList[i] // Thread 1: EXC_BAD_INSTRUCTION (code=EXC_I386_INVOP, subcode=0x0)
        if let classInfo = ClassInfo(classList[i]),
            let superclassInfo = classInfo.superclassInfo,
            superclassInfo == superClassInfo
        {
            subclassList.append(classInfo)
        }
    }

    return subclassList
}
Run Code Online (Sandbox Code Playgroud)

崩溃的线let clazz = classList[i]EXC_BAD_INSTRUCTION …

xcode objective-c ios swift

4
推荐指数
1
解决办法
474
查看次数

Swift 2:是否有一个简短的语法来有条件地从可选变量设置一个非可选变量?

有时我发现自己编写了swift 2代码,如下所示:

class Test {
    var optionalInt: Int?
    var nonOptionalInt: Int = 0
    func test() {
        if let i = optionalInt {
            nonOptionalInt = i
        }
        // do more stuff
    }
}
Run Code Online (Sandbox Code Playgroud)

有问题的部分是这样的:

if let i = optionalInt {
    nonOptionalInt = i
}
Run Code Online (Sandbox Code Playgroud)

在单词中:如果optionalInt有值,则将其分配给变量nonOptionalInt,否则不执行任何操作.

在swift 2中是否有一个等效的方式来表达这个优雅的单行而不添加一个中间变量if if i?

编辑

在考虑了第一个答案之后......

显然有一种等效的方式

if optionalInt != nil {
    nonOptionalInt = optionalInt!
}
Run Code Online (Sandbox Code Playgroud)

三元运营商?:不是等价的,因为它们可能会触发原始代码没有的didSet(如果这是预期的副作用,那就好了)

到目前为止,最优雅的答案似乎是

nonOptionalInt = optionalInt ?? nonOptionalInt
Run Code Online (Sandbox Code Playgroud)

它也可能像三元运算符一样触发didSet,因此不等效(如果是这样的话也很好).

我想我对Apple的愿望就像是

nonOptionalInt = optionalInt ?? 
Run Code Online (Sandbox Code Playgroud)

要么

nonOptionalInt ??= optionalInt
Run Code Online (Sandbox Code Playgroud)

optional-variables swift2

3
推荐指数
2
解决办法
3216
查看次数

缺少XCode/Swift中的类

在Swift项目中,我有这条线

import HealthKit
Run Code Online (Sandbox Code Playgroud)

命令单击打开导入列表.

命令单击这些类中的任何一个打开更多.

除外:命令单击

import HealthKit.HKWorkoutSession
Run Code Online (Sandbox Code Playgroud)

打开一个空文件.

这对应于编译器错误消息HKWorkoutSession不可用HKWorkoutSessionLocationType在我的代码中不可用.

在使用它一段时间后,这开始于XCode 7 beta 3.迁移到XCode 7 beta 4并没有改变任何东西.清理项目不会改变任何东西.

我怀疑这与HealthKit无关,但有一些丢失的文件.那么任何想法如何在安装新的XCode时重新安装HealthKit开发文件都无济于事?或任何其他修复?

编辑:

缺少班级

xcode swift healthkit

2
推荐指数
1
解决办法
261
查看次数

在 Swift 中将字符串转换为 Double 尊重 NSLocale

我在 UITextField 的屏幕上显示一个 Double 数字作为字符串。编辑后,我将其转换回双精度。

这是一个省略 UITextField 的单元测试方法:

func testFoundationDouble() {
    let locales: [NSLocale] = [NSLocale(localeIdentifier: "en_US"), NSLocale(localeIdentifier: "de_DE")]
    let numbers: [Double] = [0.0000001, 0.1, 1, 100000000]

    for locale in locales {
        let nf = NSNumberFormatter()
        nf.locale = locale
        nf.maximumSignificantDigits = 5
        nf.minimumSignificantDigits = 1
        for number in numbers {
            if let str = nf.stringFromNumber(number) {
                if let d = Double(str) {
                    XCTAssertEqual(number, d , "numberst must be equal. original: \(number), String: \(str) converted: \(d), locale: \(locale.localeIdentifier)")
                } else { …
Run Code Online (Sandbox Code Playgroud)

localization number-formatting swift

2
推荐指数
1
解决办法
1697
查看次数

在ABAP屏幕画家中定义或展开单选按钮组

如何在图形ABAP屏幕画家中定义单选按钮组?

它们很容易涂漆,但它们不能作为一组工作.

分组 - >定义和分组 - >展开是灰色的

sap abap radio-button

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

我是否激活了一切(在我今天回家之前)?

有什么快速可靠的方法可以知道我是否激活了我在ABAP工作台中更改的所有内容?

问的理由:如果我忘了什么,我就是(测试)运输无法导出的原因(很容易).

我最接近答案的方法是

  1. 改变一些任意代码
  2. 激活该代码
  3. 如果还有一些东西要激活,我也愿意激活它.

但有没有一种快速可靠的方法来做到这一点而不改变任何代码?

sap abap

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

核心数据NSManagedObject使用XCode 7和Swift进行向下转换

运行以下代码将在返回行中中止

Type is not Workout 
Could not cast value of type 
'NSManagedObject_Workout_' (0x7fcca20620f0) to 
'AppName.Workout' (0x100ea5f40)). 
Run Code Online (Sandbox Code Playgroud)

如果让...内部的部分永远不会执行.

func createWorkoutWithName (name: String) -> Workout? {
    let entityName = NSStringFromClass(Workout.classForCoder())
    let newEntity = NSEntityDescription.insertNewObjectForEntityForName(entityName, inManagedObjectContext: managedObjectContext)
    if let newEntity = newEntity as? Workout {
        newEntity.name = name
    }
    NSLog("createWorkoutWithName: Type is not Workout")
    return (newEntity as! Workout)

}
Run Code Online (Sandbox Code Playgroud)

我过去遇到过这个问题,我通过进入实体检查器并设置Class = AppName.Workout,在XCode 6.x中解决了这个问题.

建议这个解决方案的几个答案之一是 我怎么可以转换为NSManagedObject而不是我的实体的类型?

XCode 7为这个问题增添了新的变化:当我设置时

Class = AppName.Workout
Run Code Online (Sandbox Code Playgroud)

在实体检查器中,XCode 7自动将类名更改为

Class = AppNameWorkout
Run Code Online (Sandbox Code Playgroud)

通过删除AppName和ClassName之间的点.

那么当我无法在AppName和ClassName之间设置点时,如何在XCode 7中执行此操作?

core-data swift xcode7

0
推荐指数
1
解决办法
1253
查看次数