标签: swift5

RPBroadcastSampleHandler 没有被调用的任何方法

我想实现像Skype这样的屏幕共享功能(当应用程序在后台时,它也会共享iPhone的屏幕),为此我使用广播扩展。

这是我在 viewcontroller.swift 中的代码

    import UIKit
    import ReplayKit
    @available(iOS 12.0, *)
    class ViewController: UIViewController {

        var broadcastPicker: RPSystemBroadcastPickerView?
        var broadcastSession : NSObject?
        override func viewDidLoad() {
            super.viewDidLoad()
            let kPickerFrame = CGRect(x: 100.0, y: 100.0, width: 100.0, height: 100.0)
            broadcastPicker = RPSystemBroadcastPickerView(frame: kPickerFrame)
            broadcastPicker?.backgroundColor = UIColor.green
            broadcastPicker!.preferredExtension = "com.sharescreen.Recoder"
            view.addSubview(broadcastPicker!)

            extensionContext?.loadBroadcastingApplicationInfo(completion: {
            (bundleID, displayName, appIcon) in

            })

        }
   }
Run Code Online (Sandbox Code Playgroud)

当我点击 RPSystemBroadcastPickerView 时,我会弹出开始广播,当我开始广播时,任何扩展方法都没有调用。

这是我的扩展课程

    class SampleHandler: RPBroadcastSampleHandler {


    var session : VTCompressionSession?
    override func broadcastStarted(withSetupInfo setupInfo: [String : NSObject]?) {
        // User …
Run Code Online (Sandbox Code Playgroud)

ios swift replaykit swift5 ios13

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

在“self.init”调用之前使用的“self”错误或在不同模块中的 init 上分配给“self”

我检查了共享相同主题的问题,但没有解决我遇到的这种奇怪行为:

说我有一个简单的老学校struct

struct Person {
   var name: String
   var age: Int
}
Run Code Online (Sandbox Code Playgroud)

我想超载initextension这样的:

extension Person {
   init(name: String) {
       self.name = name
       self.age = 26
   }
}
Run Code Online (Sandbox Code Playgroud)

如您所料,此代码运行良好。

但是,如果我将其移动Person struct到不同的module(又名不同的框架)并将其公开给我的模块,如下所示:

public struct Person {
   public var name: String
   public var age: Int
}
Run Code Online (Sandbox Code Playgroud)

如果我现在initextension本地重载inmodule编译器会产生以下错误:

'self' used before 'self.init' call or assignment to 'self'

'self.init' isn't called on all paths before returning from initializer

我发现避免这个问题的唯一方法是 …

ios swift swift5

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

错误 SocketEnginePolling:长轮询请求期间出错

let manager = SocketManager(socketURL: URL(string: "Some url")!, config: [.log(true), .compress])
var socket:SocketIOClient!
var name: String?
var resetAck: SocketAckEmitter?



override func viewDidLoad() {
    super.viewDidLoad()
    
    socket = manager.defaultSocket

    socket.on(clientEvent: .connect) {data, ack in
        print("socket connected")
    }

    self.socket.on(clientEvent: .error) {data, ack in
        print("error")
    }

    self.socket?.on(clientEvent: .disconnect){data, ack in

        print("disconnect")

    }

    socket.connect()
    
    
}
Run Code Online (Sandbox Code Playgroud)

错误 SocketEnginePolling:长轮询请求期间出错

LOG SocketIOClient{/}:处理事件:数据错误:[“错误”]

sockets websocket ios socket.io swift5

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

如何在工作表视图上制作不透明的背景颜色?

我目前正在使用 SwiftUI 开发应用程序。

我正在寻找某种方法在工作表视图上制作具有不透明度的背景颜色。

有没有办法做到这一点?


我已经尝试使用下面的代码来做到这一点,我可以使用 opacity 属性更改颜色,但是我在工作表视图下看不到文本(工作表)...

import SwiftUI

struct ContentView: View {
    
    @State var isSheet = false
    
    var body: some View {
       
        Button(action: {self.isSheet.toggle()}) {
            Text("Sheet")
        }.sheet(isPresented: $isSheet){
            Color.yellow.opacity(0.5)
        }
    }
}

struct ContentView_Previews: PreviewProvider {
    static var previews: some View {
        ContentView()
    }
}  
Run Code Online (Sandbox Code Playgroud)

Xcode:版本 11.7

斯威夫特:斯威夫特 5

swift5 swiftui

6
推荐指数
3
解决办法
1414
查看次数

更新到Xcode 10.2 / Swift 5后无法构建macOS项目

在更新Xcode之前,我的项目构建良好。

但是现在,我无法再构建该项目。使用Swift 5时,构建项目永远不会完成。它停止在“构建70个100任务”中,并且永远不会完成。这些数字也不总是相同的,但是它永远不会完成。

如果我尝试使用Xcode将项目从Swift 4.2转换为Swift 5,它同样也不会完成转换。

如果我尝试更改工具链以使用Swift 4.2.1版本的工具链,则代码可以成功编译,但是在运行时我会立即崩溃:

dyld: Symbol not found: _$SBOWV
  Referenced from: /Users/compc/Library/Developer/Xcode/DerivedData/Swift_Coder-hczsehpbafcwkfgwyameucznmhsp/Build/Products/Debug/Swift Coder.app/Contents/MacOS/../Frameworks/SavannaKit.framework/Versions/A/SavannaKit
  Expected in: /usr/lib/swift/libswiftCore.dylib
 in /Users/compc/Library/Developer/Xcode/DerivedData/Swift_Coder-hczsehpbafcwkfgwyameucznmhsp/Build/Products/Debug/Swift Coder.app/Contents/MacOS/../Frameworks/SavannaKit.framework/Versions/A/SavannaKit
Run Code Online (Sandbox Code Playgroud)

我尝试清理项目并删除派生数据,但似乎都无法正常工作。

如果使用Xcode 10.1,则该项目将继续构建并正常运行。

xcode swift swift5

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

如何使用Alamofire 5.0.0-beta.3(Swift 5)上传图像(多部分)

我正在使用分段上传图片。该代码在Swift 4Alamofire 4中可以正常工作。请为此提供任何解决方案。

public class func callsendImageAPI(param:[String: Any],arrImage:[UIImage],imageKey:String,URlName:String,controller:UIViewController, withblock:@escaping (_ response: AnyObject?)->Void){

    Alamofire.upload(multipartFormData:{ MultipartFormData in

        for (key, value) in param {
            MultipartFormData.append((value as AnyObject).data(using: String.Encoding.utf8.rawValue)!, withName: key)
        }

        for img in arrImage {

            guard let imgData = img.jpegData(compressionQuality: 1) else { return }
            MultipartFormData.append(imgData, withName: imageKey, fileName: FuncationManager.getCurrentTimeStamp() + ".jpeg", mimeType: "image/jpeg")
        }

    },usingThreshold:UInt64.init(),
      to: "URL",
        method:.post,
        headers:["Content-type": "multipart/form-data",
                 "Content-Disposition" : "form-data"],
        encodingCompletion: { encodingResult in
            switch encodingResult {
            case .success(let upload, , ):

                upload.uploadProgress(closure: { …
Run Code Online (Sandbox Code Playgroud)

ios alamofire swift5

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

警告:非特定平台“ *”的“可用”属性中的版本号超出预期

我有这段代码:

@available(*, deprecated:3.0, message:"Use activate().")
public func install() {
    self.activate()
}
Run Code Online (Sandbox Code Playgroud)

而且由于我已经升级到swift5xcode 10.2,所以我得到以下警告:

非特定平台“ *”的“可用”属性中的版本号超出预期

并固定为:

将':3.0'替换为''

这是什么警告?它说什么?

ios swift snapkit swift5 xcode10.2

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

无法锁定IOS10中一个视图控制器的旋转

背景

我有一个使用AVFoundation的应用程序以拥有自定义相机。这发生在中OCRViewController。当我拍照时,会将捕获的图片发送到其他视图ImagePreviewViewController

我使用Xcode 10.2.1 (10E1001)Swift 5

目标

我想实现的是将的方向锁定ImagePreviewViewController为图像的原始方向。我已经知道如何获取图像的方向,但是我无法锁定视图的方向。

我得到这样的图像旋转: let imageOri = capturedImage?.imageOrientation

我尝试了什么?

我尝试了其他来源的公认答案:

如何仅为一个视图控制器锁定方向?

如何仅在Swift中将一个视图控制器的方向锁定为纵向模式

https://www.hackingwithswift.com/example-code/uikit/how-to-lock-a-view-controllers-orientation-using-supportedinterfaceorientations

https://developer.apple.com/documentation/uikit/uiviewcontroller#//apple_ref/occ/instm/UIViewController/supportedInterfaceOrientations下的“ 处理视图旋转 ” 下阅读文档,内容如下:

在编写此查询时,我还尝试了许多建议的解决方案,但是,大多数方法似乎使用以下方法(或它的一种变体),它对我不起作用。

override func supportedInterfaceOrientations() -> Int {
    return Int(UIInterfaceOrientationMask.Portrait.rawValue)
}

override func shouldAutorotate() -> Bool{
    return false
}

override func preferredInterfaceOrientationForPresentation() -> UIInterfaceOrientation {
    return UIInterfaceOrientation.Portrait
}
Run Code Online (Sandbox Code Playgroud)

从iOS 8开始,不推荐使用所有与旋转相关的方法。相反,旋转被视为视图控制器视图大小的变化,因此使用viewWillTransition(to:with :)方法进行报告。

但是,我不确定如何从这里开始。

有趣的代码片段

我的中使用了以下方法OCRViewController,在此实例化ImagePreviewViewController并附加捕获的图像。

func displayCapturedPhoto(capturedPhoto : UIImage) {
    let imagePreviewViewController = storyboard?.instantiateViewController(withIdentifier: "ImagePreviewViewController") …
Run Code Online (Sandbox Code Playgroud)

xcode uiviewcontroller swift ios10 swift5

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

线程1:EXC_BAD_ACCESS(代码= 1,地址= 0x48)-与iOS13.1(开发版本2)一起损坏

因此,昨天我将iPhone 6S更新为iOS13.1的第​​二个开发版本,突然间我的应用程序(在应用程序商店中显示为0崩溃显示在Connect应用程序上)在我的设备上运行时不起作用。但是,它确实可以在Xcode的模拟器中使用。我使用的是Xcode 10.3,但Xcode 11 Beta的功能相同,模拟器也可以在Beta上运行(尽管它们以其他方式破坏了我的应用程序)。

当我点击一个按钮时,应该使我进入所点击按钮的详细视图,但我收到此错误:

Thread 1: EXC_BAD_ACCESS (code=1, address=0x48)
Run Code Online (Sandbox Code Playgroud)

这段代码在哪

// sets up the audio for use in the app --------------------------------------------------------------//
        let GetReady = Bundle.main.path(forResource: “Get_Ready_up9db”, ofType: “m4a”)
        // this tells the compiler what to do when action is received
        do {
            audioPlayer_GetReady = try AVAudioPlayer(contentsOf: URL(fileURLWithPath: GetReady! )) // Thread 1: EXC_BAD_ACCESS (code=1, address=0x48)
            try AVAudioSession.sharedInstance().setCategory(AVAudioSession.Category(rawValue: convertFromAVAudioSessionCategory(AVAudioSession.Category.ambient)))
            try AVAudioSession.sharedInstance().setActive(true)
        }
        catch{
            print(error)
        }
Run Code Online (Sandbox Code Playgroud)

我不知道为什么突然这么做,但是因为我不知道为什么,我有点害怕,因为我确定iOS 13很快就会问世。

请帮忙!

iphone swift5 ios13

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

变量更改时调用异步函数 (SwiftUI)

我有一个@State变量和异步函数。我想每当该变量发生更改时调用异步函数。

基本上,我正在尝试做的事情

        VStack {
            Text("")
        }
        .onChange(of: var) { newValue in
            await asyncFunction()
        }
Run Code Online (Sandbox Code Playgroud)

但这给了我以下错误

无法将“(Int) async -> ()”类型的函数传递给需要同步函数类型的参数

swift swift5 swiftui

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