小编Ant*_*sov的帖子

NSUserDefaults没有使用Watch OS2开发Xcode beta

我刚刚安装了最新的Xcode测试版来试用Swift 2以及Apple Watch开发部分的改进.

我实际上很难搞清楚为什么这种NSUserDefaultsiOSWatch OS2之间共享信息的基本方法无法正常工作.

我按照这个循序渐进的教程来检查我是否错过了这个过程中的某些内容,比如打开手机应用程序和扩展程序的同一组,但这就是我得到的:没有.

这是我在iPhone应用程序中为ViewController编写的内容:

import UIKit

class ViewController: UIViewController {
    @IBOutlet weak var lb_testo: UITextField!
    let shared_defaults:NSUserDefaults = NSUserDefaults(suiteName: "group.saracanducci.test")!
    var name_data:NSString? = ""

    override func viewDidLoad() {
        super.viewDidLoad()

        name_data = shared_defaults.stringForKey("shared")
        lb_testo.text = name_data as? String
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
    }

    @IBAction func upgrade_name(sender: AnyObject) {
        name_data = lb_testo.text
        shared_defaults.setObject(name_data, forKey: "shared")

        lb_testo.resignFirstResponder()
        shared_defaults.synchronize()
    }
}
Run Code Online (Sandbox Code Playgroud)

这就是我在WatchKit的InterfaceController中所拥有的:

import WatchKit
import …
Run Code Online (Sandbox Code Playgroud)

operating-system nsuserdefaults swift watchkit watchos-2

23
推荐指数
4
解决办法
7691
查看次数

无法访问iOS模拟器上的网站 - '此连接不是私密的'

我目前正在构建一个手表应用扩展程序,并希望使用模拟器,因为它比每次构建到我的实际Apple Watch更容易,更快捷.

但是,我遇到了模拟器的问题,由于错误"此连接不是私有",我无法访问任何网站.这通常不会成为问题,除非在我的情况下我需要使用Facebook登录我的iOS,我在那里面临同样的问题.使用时,消息略有不同SFSafariViewController:

  Safari cannot open the page because it could not establish a secure connection to the server
Run Code Online (Sandbox Code Playgroud)

我已经在模拟器上查看了Safari设置,看看是否有任何我可以禁用的安全性,但是无法找到任何内容.有什么办法可以解决这个问题吗?

我目前正在使用Xcode 9.1和macOS High Sierra 10.13.1

截图

xcode ios-simulator

14
推荐指数
2
解决办法
5522
查看次数

在Swift中,当使用“ [weak self] in”时,当嵌套在另一个闭包中时,我应该加倍使用吗?

在Swift中,当使用时[weak self] in,当嵌套在另一个闭包中时,我应该加倍使用。

例:

override func viewDidLoad() {
    super.viewDidLoad()

    makeAPICall() { [weak self] in

        self?.finishedAPICall = true

        DispatchQueue.main.async { [weak self] in
            // random code with self
            self?.view.layoutIfNeeded()
        }
    }
}

func makeAPICall(completion: () -> Void) {}
Run Code Online (Sandbox Code Playgroud)

最外层[weak self]使得以下所有自我都是可选的。这是否意味着它也一直在将其保存在嵌套闭包内部的内存中?如果我在两个方面都使用自我,是否在两个方面都需要自我?

closures memory-leaks memory-management swift

8
推荐指数
0
解决办法
3098
查看次数

presentViewController和performSegueWithIdentifier之间的差异

这是我遇到的一个概念性问题(不是试图解决特定问题,而是更好地理解问题).

IBOutlets 在视图控制器默认情况下是"强制解包"变量,我不知道原因,但它告诉我iOS要求在调用VC时初始化它们中的每一个.

我有一个视图控制器A和另外两个BC.我有一个点击监听,在给我一个自定义按钮A,取决于某个变量,如果点击后决定BC将要被调用.

我尝试实现这个,presentViewController但由于某种原因我的程序在运行时崩溃,因为在任何一个B或中的非初始化插座C.

然而,我用segues命名并尝试了相同的东西,performSegueWithIdentifier它只是起作用.

我想知道,他们之间的区别是什么,我告诉我知道的一切是正确的吗?

提前致谢

uiviewcontroller ios swift

5
推荐指数
0
解决办法
1234
查看次数

致命错误:无法对 keypath 类型进行解密

我有一个简单的类,我想在 中使用 keypath init,如下所示:

class V: UIView {
    convenience init() {
        self.init(frame: .zero)
        self[keyPath: \.alpha] = 0.5
    }
}

let v = View()
Run Code Online (Sandbox Code Playgroud)

当我运行此代码时,出现运行时错误:

致命错误:无法从 '????XD' 中解开 keypath 类型:

但是,如果我在 keyPath 中指定类型它工作正常:

class V: UIView {
    convenience init() {
        self.init(frame: .zero)
        self[keyPath: \UIView.alpha] = 0.5
    }
}

let v = View()
print(v.alpha) \\ prints 0.5
Run Code Online (Sandbox Code Playgroud)

但是,更奇怪的是这段代码有效:

class V: UIView {
    convenience init() {
        self.init(frame: .zero)
        foo()
    }
    
    func foo() { 
        self[keyPath: \.alpha] = 0.5
    }
}

let v = …
Run Code Online (Sandbox Code Playgroud)

uikit ios swift swift-keypath swift5.1

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

快速删除阿拉伯语中的变音符号

我正在尝试删除阿拉伯文本变音符号。例如我需要将其转换\xd9\x8e\xd8\xa8为此\xd8\xa8,这是我的代码:

\n\n
if (text != "") {\n    for char in text! {\n        print(char)\n        print(char.unicodeScalars.first?.value)\n        if allowed.contains("\\(char)"){\n            newText.append(char)\n        }\n    }\n    self.textView.text = text!\n} else {\n//            TODO :\n//            show an alert\n    print("uhhh no way")\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n

我已经尝试过这些解决方案,但没有运气:

\n\n

如何从 Swift 中的字符串中删除变音符号?

\n\n

NSString:从字符串中删除 UTF-8 重音符号的简单方法?

\n

string arabic diacritics swift arabic-support

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

从视频AVFoundation中提取音频

func extractAudioFromVideo(videoUrl:NSURL, audioPath:String){
    //2
    var asset = AVURLAsset(URL: videoUrl, options: nil)
    asset.loadValuesAsynchronouslyForKeys(NSArray(object: "tracks") as [AnyObject], completionHandler: { () -> Void in
        var audioTrack = asset.tracksWithMediaType(AVMediaTypeAudio)[0] as! AVAssetTrack

        var audioComposition = AVMutableComposition()

        var audioCompositionTrack:AVMutableCompositionTrack!

        audioCompositionTrack = audioComposition.addMutableTrackWithMediaType(AVMediaTypeAudio, preferredTrackID: CMPersistentTrackID())
        audioCompositionTrack.insertTimeRange(audioTrack.timeRange, ofTrack: audioTrack, atTime: CMTimeMake(0, 1), error: nil)

        var exportSession = AVAssetExportSession(asset: audioComposition, presetName: AVAssetExportPresetAppleM4A)
        var toFileUrl = NSURL(fileURLWithPath: audioPath)

        exportSession.outputURL = toFileUrl
        exportSession.outputFileType = "com.apple.m4a-audio"

        exportSession.exportAsynchronouslyWithCompletionHandler({ () -> Void in
            if exportSession.status == AVAssetExportSessionStatus.Completed {
                println("Succes")
            }else{
                println("not working")
            }
        }) …
Run Code Online (Sandbox Code Playgroud)

avfoundation ios swift

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

带有麦克风崩溃的 AudioKit 录音机设置,“所需条件为假:mixedDest”

我希望有人能在这里帮助我。我正在尝试进行基本的录音设置,但 AudioKit 正在崩溃,我确定这是我的错,我没有做正确的事情。这是我的设置。在我中,viewDidLoad我像这样配置 AudioKit:

// Session settings
do {
    AKSettings.bufferLength = .short
    try AKSettings.setSession(category: .playAndRecord, with: .allowBluetoothA2DP)
} catch {
    AKLog("Could not set session category.")
}

AKSettings.defaultToSpeaker = true

// Setup the microphone
micMixer = AKMixer(mic)
micBooster = AKBooster(micMixer)

// Load the test player
let path = Bundle.main.path(forResource: "audio1", ofType: ".wav")
let url = URL(fileURLWithPath: path!)
testPlayer = AKPlayer(url: url)
testPlayer?.isLooping = true

// Setup the test mixer
testMixer = AKMixer(testPlayer)

// Pass the output from the player …
Run Code Online (Sandbox Code Playgroud)

ios swift audiokit

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

找不到框架吊舱

我知道这是一个老问题。但是我以一种非常奇怪的方式产生了这个问题。实际上,我已经开发了一个安装了pod的应用程序,并且Deployment Target中的所有内容都为11.2。我为此添加了一个.ipa并将其发送给客户端进行测试。但是客户端无法安装,因为iPad Mini 1没有iOS 10或更高版本。因此,我将部署目标降低到客户端拥有的iPad Mini1的当前iOS版本9.3。在获取档案时,Xcode会产生如下错误: 在此处输入图片说明

有什么问题??我们需要取消Pod的安装并重新安装,还是只修改现有的Pod文件?请帮忙。

linker-errors ios cocoapods swift xcode9.2

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

如何检查Xcode是否下载了所有配置文件?

我有 Xcode 版本 8.3.2 (8E2002)。我想更新配置文件。假设我想添加新设备。我曾经使用 fastlane 手动创建存档。如何检查所有新设备是否成功启动新存档?

xcode provisioning-profile

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