小编Ash*_*lls的帖子

Swift 4.2无法将类型'(UIImagePickerController.InfoKey).Type'的值转换为预期的参数类型'UIImagePickerController.InfoKey'

我的下面的代码与swift 4工作得很好但升级到swift 4.2后我收到了这个错误,我浪费了3个小时搜索问题但是失败了.如果有人可以指导我如何解决这个问题.

func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey : Any]) {

    if postType == 2 {
        let image = info[convertFromUIImagePickerControllerInfoKey(UIImagePickerController.InfoKey)] as! UIImage
        mediaType.image = image
    } else {
        videoURL = info[convertFromUIImagePickerControllerInfoKey(UIImagePickerController.InfoKey.mediaURL)] as? URL
        do {
            let asset = AVURLAsset(url: videoURL!, options: nil)
            let imgGenerator = AVAssetImageGenerator(asset: asset)
            imgGenerator.appliesPreferredTrackTransform = true
            let cgImage = try imgGenerator.copyCGImage(at: CMTime.init(value: 0, timescale: 1), actualTime: nil)
            let thumbnail = UIImage(cgImage: cgImage)
            self.mediaType.image = thumbnail
        } catch {
            print("*** Error generating thumbnail: \(error)")
        } …
Run Code Online (Sandbox Code Playgroud)

uiimagepickercontroller ios swift ios12

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

来自app delegate的UIStoryboard加载

我试图以这种方式从app delegate .m加载UIStoryboard:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{    
    UIStoryboard *storybord = [UIStoryboard storyboardWithName:@"MainStoryboard_iPhone" bundle:[NSBundle mainBundle]];
    UIViewController *vc =[storybord instantiateInitialViewController];
    [self.window addSubview:vc.view];

    return YES;
}
Run Code Online (Sandbox Code Playgroud)

这段代码有什么问题?任何的想法?

objective-c ios uistoryboard

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

将 @IBSegueAction 与 UINavigationController 结合使用

感谢AD Progress出色的研究和下面的回答,我终于弄清楚了IBSegueActions是怎么回事。

如果您将rootViewControllersegue(或任何其他类型,大概)连接到IBSegueActionin 中UINavigationContoller,但在那里找不到它,它将查看响应者链上的下一个视图控制器,直到找到IBSegueAction具有正确签名的 。如果它没有找到一个,它会叫init(with coder: NSCoder)rootViewController。如果只是在某处记录了这一点……


笔记

注意:这是一个说明问题的最小示例 - 如何在UINavigationController使用IBSegueAction. 我知道这不是您通常呈现详细视图的方式。

注 2:我知道如何将 segues 与prepare(for segue: UIStoryboardSegue). 我想知道如何初始化一个视图控制器时,如何通过非可选参数包含在一个模式UINavigationController使用IBSegueAction

注 3:我知道如何将 anIBSegueAction用于未包含在 a 中的视图控制器UINavigationController(例如推送导航堆栈)


原始问题

我有以下设置…

在此处输入图片说明

中的人员列表UITableViewController。轻敲 aPersonCell呈现 aPersonViewController内 aUINavigationController

为了避免在 中有一个可选PersonPersonViewController,我试图使用IBSegueActions。

我首先想到的是,我需要一个用于之间的SEGUEPeopleViewController和 …

ios uistoryboard swift ibsegueaction

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

在兼容模式下检测在iPad上运行的iPhone应用程序

我的iPhone应用程序不是通用的,但它有一个功能,我想为在iPad上玩的人启用.有没有办法在兼容模式下检测到你在iPad上运行?用于检测机器规格的UIDevice方法都返回您在iPhone上获得的值(至少在模拟器上).我唯一能想到的就是检测OS 3.2,但这种技术不会长时间运行.

iphone cocoa-touch objective-c ipad

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

Unarchive数组与NSKeyedUnarchiver unarchivedObject(ofClass:from :)

自从升级到Swift 4.2以来,我发现许多NSKeyedUnarchiver和NSKeyedArchiver方法已被弃用,我们现在必须使用type方法static func unarchivedObject<DecodedObjectType>(ofClass: DecodedObjectType.Type, from: Data) -> DecodedObjectType?来取消归档数据.

我成功地存档了我的定制类WidgetData的数组,这是一个NSObject子类:

private static func archiveWidgetDataArray(widgetDataArray : [WidgetData]) -> NSData {

    guard let data = try? NSKeyedArchiver.archivedData(withRootObject: widgetDataArray as Array, requiringSecureCoding: false) as NSData
        else { fatalError("Can't encode data") }

    return data

}
Run Code Online (Sandbox Code Playgroud)

当我尝试取消归档此数据时出现问题:

static func loadWidgetDataArray() -> [WidgetData]? {

    if isKeyPresentInUserDefaults(key: USER_DEFAULTS_KEY_WIDGET_DATA) {

        if let unarchivedObject = UserDefaults.standard.object(forKey: USER_DEFAULTS_KEY_WIDGET_DATA) as? Data {

            //THIS FUNCTION HAS NOW BEEN DEPRECATED:
            //return NSKeyedUnarchiver.unarchiveObject(with: unarchivedObject as Data) as? [WidgetData]

            guard let nsArray = …
Run Code Online (Sandbox Code Playgroud)

ios nskeyedunarchiver swift ios12

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

使用 Combine 和 SwiftUI 的异步操作

我试图弄清楚如何使用Combine 和SwiftUI 处理异步操作。

例如,我有一个HealthKitManager类,除其他外,处理请求健康商店授权......

final class HealthKitManager {

    enum Error: Swift.Error {
        case notAvailable
        case authorisationError(Swift.Error)
    }

    let healthStore = HKHealthStore()

        func getHealthKitData(for objects: Set<HKObjectType>, completion: @escaping (Result<Bool, Error>) -> Void) {

        guard HKHealthStore.isHealthDataAvailable() else {
            completion(.failure(.notAvailable))
            return
        }

        self.healthStore.requestAuthorization(toShare: nil, read: objects) { completed, error in
            DispatchQueue.main.async {
                if let error = error {
                    completion(.failure(.authorisationError(error)))
                }
                completion(.success(completed))
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

其用法如下...

struct ContentView: View {

    let healthKitManager = HealthKitManager()

    @State var showNextView = false
    @State var …
Run Code Online (Sandbox Code Playgroud)

asynchronous swiftui combine

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

Play 2.0 scala教程 - 由于进化,heroku失败了

我正在关注Scala 的Play 2.0 教程

一切正常,直到我尝试在Heroku上推送和运行它.运行"git push heroku master"后,服务器崩溃了.检查日志,我看到以下内容:

Starting process with command `target/start -Dhttp.port=37849 -Xmx384m -Xss512k -XX:+UseCompressedOops`
2012-08-13T06:52:45+00:00 app[web.1]: Play server process ID is 2
2012-08-13T06:52:46+00:00 app[web.1]: [info] play - database [default] connected at jdbc:h2:mem:play
2012-08-13T06:52:46+00:00 app[web.1]: [warn] play - Your production database [default] needs evolutions! 
2012-08-13T06:52:46+00:00 app[web.1]: 
2012-08-13T06:52:46+00:00 app[web.1]: CREATE SEQUENCE task_id_seq;
2012-08-13T06:52:46+00:00 app[web.1]: label varchar(255)
2012-08-13T06:52:46+00:00 app[web.1]: CREATE TABLE task (
2012-08-13T06:52:46+00:00 app[web.1]: id integer NOT NULL DEFAULT nextval('task_id_seq'),
2012-08-13T06:52:46+00:00 app[web.1]: );
2012-08-13T06:52:46+00:00 app[web.1]: 
2012-08-13T06:52:46+00:00 app[web.1]: # --- …
Run Code Online (Sandbox Code Playgroud)

scala playframework-2.0

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

为什么Livy或spark-jobserver而不是简单的Web框架?

我正在Apache Spark上构建一个RESTful API.提供以下Python脚本spark-submit似乎工作正常:

import cherrypy
from pyspark.sql import SparkSession

spark = SparkSession.builder.appName('myApp').getOrCreate()
sc = spark.sparkContext

class doStuff(object):
    @cherrypy.expose
    def compute(self, user_input):
        # do something spark-y with the user input
        return user_output

cherrypy.quickstart(doStuff())
Run Code Online (Sandbox Code Playgroud)

但谷歌搜索我看到像Livyspark-jobserver这样的东西.我阅读了这些项目的文档和一些教程,但我仍然不完全理解Livy或spark-jobserver优于使用CherryPy或Flask或任何其他Web框架的简单脚本的优点.它是关于可扩展性的吗?上下文管理?我在这里错过了什么?如果我想要的是一个用户不多的简单RESTful API,那么Livy或spark-jobserver值得吗?如果是这样,为什么?

apache-spark spark-jobserver livy

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

Swift:添加选项Ints

我声明如下:

var x:Int?
var y:Int?
Run Code Online (Sandbox Code Playgroud)

我想要一个z包含和的x和的第三个变量y.据推测,作为x&y是自选,z也必须是一个可选的:

var z:Int? = x + y
Run Code Online (Sandbox Code Playgroud)

但这给出了一个编译错误"可选类型'Int?'的值 没打开;你的意思是用'!' 要么 '?'"

如果我打开x&y:

var z:Int? = x! + y!
Run Code Online (Sandbox Code Playgroud)

我得到一个运行时错误,因为x&n y为零,所以无法解开.

我可以达到如下所需的结果:

var z:Int?

if let x1 = x {
    if let y1 = y {
       z = x1+y1
    }
}
Run Code Online (Sandbox Code Playgroud)

但是将2个整数加在一起似乎有点冗长!有没有更好的方法来实现这一目标?

optional swift

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

当app处于后台状态Swift时暂停计时器

我的ViewController.swift

func startTimer() {
    timer = NSTimer().scheduleTimerWithTimerInvterval(1.0,target: self,selctor: Selector("couting"),userinfo: nil, repeats: true)
}

func pauseTimer() {
    timer.invalidate()
    println("pausing timer")
}
Run Code Online (Sandbox Code Playgroud)

这是appDelegate.swift

func applicateWillResignActive(application: UIApplication) {
    viewController().pauseTimer()
    println("closing app")
}
Run Code Online (Sandbox Code Playgroud)

它是打印暂停计时器和关闭应用程序,但当我再次打开时,我看到它从未暂停.我该怎么做?

nstimer ios appdelegate swift

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