标签: swift4

Swift包管理器 - Swift 4语法

我正在尝试使用更新的SPM for Swift4与以下Package.swift文件 - PackageDescription API Version 4

import PackageDescription

let package = Package(
    name: "Name",
    dependencies : [
        .package(url: "url", .branch("swift4"))
    ],
    exclude: ["Tests"]
)
Run Code Online (Sandbox Code Playgroud)

我也有正确版本的SPM:

Apple Swift软件包管理器 - Swift 4.0.0-dev(swiftpm-13081.9)

但我无法通过swift build命令构建库.我看到以下错误:

...错误:类型'版本'没有成员'分支'

swift swift-package-manager swift4

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

选择器与动作Swift 4

Swift的新手.我下面有两个片段:

NotificationCenter.default.addObserver(self, 
    selector:#selector(ViewController.notificationReceived), 
    name: Notification.Name(rawValue: name), object: nil)

@objc func notificationReceived(notification:Notification){
    let x = notification.userInfo!
    print("\(x["name"]!)")

}
Run Code Online (Sandbox Code Playgroud)

最后

let x:UITapGestureRecognizer = UITapGestureRecognizer(target: self, 
    action: #selector(tapped))

self.addGestureRecognizer(x)

func tapped(){
    print("tapped")

    self.delegate!.theViewTapped()

}
Run Code Online (Sandbox Code Playgroud)

为什么这个notificationCenter?我应该提供参数的@objc标签,selector但不提供UITapGestureRecognizer动作参数?

SelectorAction inSwift有什么区别?

selector ios swift swift4

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

从Swift 4中的结构获取所有关键路径

假设我有这个结构:

struct MyStruct {
    let x: Bool
    let y: Bool
}
Run Code Online (Sandbox Code Playgroud)

在Swift 4中,我们现在可以使用myStruct[keyPath: \MyStruct.x]界面访问它的属性.

我需要的是一种访问所有关键路径的方法,例如:

extension MyStruct {

    static func getAllKeyPaths() -> [WritableKeyPath<MyStruct, Bool>] {
        return [
            \MyStruct.x,
            \MyStruct.y
        ]
    }

}
Run Code Online (Sandbox Code Playgroud)

但是,显然,没有我必须手动声明数组中的每个属性.

我怎样才能做到这一点?

swift swift4

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

隐藏视图控制器的导航栏

我试图隐藏单个视图控制器的导航控制器没有运气,导航栏被隐藏为第一个vc,但它没有显示第二个vc.

这是我在第一个vc中使用的代码:

override func viewWillAppear(_ animated: Bool) {
    super.viewWillAppear(animated)

    // Hide the Navigation Bar
    self.navigationController?.setNavigationBarHidden(true, animated: animated)
}

override func viewWillDisappear(_ animated: Bool) {
    super.viewWillDisappear(animated)

    // Show the Navigation Bar
    self.navigationController?.setNavigationBarHidden(false, animated: animated)
}
Run Code Online (Sandbox Code Playgroud)

swift 4有什么变化?该代码在swift 3中有效...

xcode ios swift swift4 xcode9

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

Swift 4:使用Codable`通用参数'T'无法推断

我收到以下错误:

Generic parameter 'T' could not be inferred

在线: let data = try encoder.encode(obj)

这是代码

import Foundation

struct User: Codable {
    var firstName: String
    var lastName: String
}

let u1 = User(firstName: "Ann", lastName: "A")
let u2 = User(firstName: "Ben", lastName: "B")
let u3 = User(firstName: "Charlie", lastName: "C")
let u4 = User(firstName: "David", lastName: "D")

let a = [u1, u2, u3, u4]

var ret = [[String: Any]]()
for i in 0..<a.count {
        let param = [
            "a" : a[i], …
Run Code Online (Sandbox Code Playgroud)

encoder swift swift4 xcode9 codable

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

@objc关键字扩展子类行为

有人可以解释为什么@objc这里需要关键字来编译代码吗?

据我所知,这个关键字用于工作ObjC消息方法调度.但这不是一个NSObject例子.

 class MyClass {
 }

 extension MyClass {
     @objc func extensionMethod() { /// THIS LINE
         print("A")
     }
 }

 class SubClass: MyClass {
     override func extensionMethod() {
         print("B")
     }
 }
Run Code Online (Sandbox Code Playgroud)

@objc关键字是否启用消息调度以及dynamic?或不?

swift swift4 swift4.1

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

如何准确检测是否在Swift 4中的UILabels内部点击了链接?

编辑

请参阅我的答案以获得完整的解决方案:

我设法通过使用UITextView而不是a 来解决这个问题UILabel.我写了一个类,使UITextView行为像一个UILabel但具有完全准确的链接检测.


我已经成功设置了链接的样式而没有使用问题,NSMutableAttributedString但我无法准确地检测到哪个字符已被点击.我已经尝试了这个问题中的所有解决方案(我可以转换为Swift 4代码),但没有运气.

以下代码有效,但无法准确检测单击了哪个字符并获取了链接的错误位置:

func didTapAttributedTextInLabel(label: UILabel, inRange targetRange: NSRange) -> Bool {
    // Create instances of NSLayoutManager, NSTextContainer and NSTextStorage
    let layoutManager = NSLayoutManager()
    let textContainer = NSTextContainer(size: CGSize.zero)
    let textStorage = NSTextStorage(attributedString: label.attributedText!)

    // Configure layoutManager and textStorage
    layoutManager.addTextContainer(textContainer)
    textStorage.addLayoutManager(layoutManager)

    // Configure textContainer
    textContainer.lineFragmentPadding = 0.0
    textContainer.lineBreakMode = label.lineBreakMode
    textContainer.maximumNumberOfLines = label.numberOfLines
    let labelSize = label.bounds.size
    textContainer.size = labelSize

    // Find the tapped …
Run Code Online (Sandbox Code Playgroud)

xcode nsattributedstring uilabel ios swift4

12
推荐指数
3
解决办法
2040
查看次数

'无效的bitcode版本(制作人:'902.0.39.2_0'读者:'900.0.37_0')'

我正在使用Xcode 9.0.

我的pod文件:

pod 'Alamofire', '~> 4.3'
pod 'SwiftyJSON'
pod 'AlamofireSwiftyJSON'
pod 'KSToastView', '0.5.7'
pod 'SDWebImage', '~> 4.0'
pod 'NVActivityIndicatorView'   
pod 'Firebase/Core'
pod 'Firebase/Messaging'
pod 'CarbonKit'
pod 'SBPickerSelector'
pod 'SwiftyStoreKit'    
pod 'Fabric'
pod 'Crashlytics'
pod 'SAMKeychain', '1.5.2'
Run Code Online (Sandbox Code Playgroud)

我的错误日志:

ld:无法在bitcode包中重新解析目标文件:'无效的bitcode版本(生产者:'902.0.39.2_0'Reader:'900.0.37_0')',使用libLTO版本'LLVM版本9.0.0,(clang-900.0.37) )'for architecture arm64 clang:error:链接器命令失败,退出代码为1(使用-v查看调用)

我读了很多关于这个问题的文章但是我无法解决它.我提到了这一点,是的,这注意到我想用我的项目构建存档

configuration = Debug
ENABLE_BITCODE = YES
configuration = Release
ENABLE_BITCODE = YES
completeSettings = some
ENABLE_BITCODE = YES
Run Code Online (Sandbox Code Playgroud)

有什么建议?

architecture ios bitcode swift4 xcode9

12
推荐指数
4
解决办法
8589
查看次数

Xcode 11 无法识别核心数据实体

我刚刚声明了一个名为“Users”数组的实体:

var UsersArray = [Users]()
Run Code Online (Sandbox Code Playgroud)

我收到此错误:

使用未解析的标识符“用户”

提示:我确实导入了 CoreData 并创建了实体

xcode entity core-data swift swift4

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

点击表格视图单元格中的视频以在视图控制器中打开它

tl;dr 我试图在 Twitter 应用程序中重新创建这个:https : //i.imgur.com/173CVyM.mp4

如您所见,Twitter 在提要(表格视图单元格)中播放视频,当视频被点击时,视频会平滑地过渡到它自己的视图控制器,而不会停止或缓冲视频。

我已经完成了在提要部分中播放的视频(在表格视图单元格中),但现在我被困在如何实际将视频平滑地转换为点击的视图控制器上。

在高层次上,我需要在这里做什么?

我当前的设置有一个AVPlayer实例作为每个表视图单元格的一部分。我会将AVPlayer实例传递给视图控制器并从那里继续播放视频吗?内存管理呢?我觉得AVPlayer每个表格视图单元格都有一个实例会导致一些问题,但我不完全确定。

作为第二个问题,如果我想忽略花哨的动画/过渡,当在表格视图单元格中点击视频时,我如何继续在视图控制器中无缝播放视频?

ios avplayer swift swift4

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