小编vac*_*ama的帖子

在Swift中使用带有suiteName的NSUserDefaults

我遇到了问题NSUserDefaults(suiteName: "group.app-ID").

我尝试将一个NSArray存入NSUserDefaults容器中的应用程序中viewDidLoad().

var defaults: NSUserDefaults = NSUserDefaults(suiteName: "group.app-ID")
defaults.setObject(["One", "Two"], forKey: "bookmarks")
defaults.synchronize()
Run Code Online (Sandbox Code Playgroud)

在我的TodayExtension中,我试着像这样得到数组:

扩展ViewController中的Globaly Defenition:

var defaults: NSUserDefaults = NSUserDefaults(suiteName: "group.app-ID")
var defaultsArray: NSArray!
Run Code Online (Sandbox Code Playgroud)

viewDidLoad()

defaultsArray = defaults.objectForKey("bookmarks") as NSArray
Run Code Online (Sandbox Code Playgroud)

defaultsArray总是如此nil.

应用程序组权利已添加到所有目标.

nsuserdefaults ios swift

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

可选绑定功能与可选链接有何不同?

编辑:

我正在学习Raywenderlich的教程.我的问题是为什么我们使用可选的绑定,即if let它有什么区别?为什么我们不能使用可选链接 - 类似于A线和B线?

 func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
    let cell = tableView.dequeueReusableCellWithIdentifier("IconCell", forIndexPath: indexPath)
    let icon = icons[indexPath.row]

    cell.textLabel?.text = icon.title // Line A
    cell.detailTextLabel?.text = icon.subtitle // Line B

   if let imageView = cell.imageView, iconImage = icon.image { //Line C
      imageView.image = iconImage
    }
Run Code Online (Sandbox Code Playgroud)

教练的解释是:

当我们实例化图标时,我们会根据字符串获得对图像的引用...如果由于某种原因图像未包含在包中,重命名或删除,则该图标可能没有与之关联的图像.我们必须使用,如果让它确保它在那里.

我仍然不明白其中的区别.

optional swift

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

使用CGGradient的PaintCode StyleKit Swift 3.0错误

StyleKit代码:

static let red: UIColor = UIColor(red: 0.800, green: 0.000, blue: 0.000, alpha: 1.000)
static let blue: UIColor = UIColor(red: 0.200, green: 0.600, blue: 1.000, alpha: 1.000)
static let green: UIColor = UIColor(red: 0.000, green: 0.600, blue: 0.200, alpha: 1.000)
static let yinying: UIColor = UIColor(red: 1.000, green: 1.000, blue: 1.000, alpha: 0.200) static let redGradient: CGGradient = CGGradientCreateWithColors(CGColorSpaceCreateDeviceRGB(), [UIColor.whiteColor().CGColor, UIColor.whiteColor().blendedColorWithFraction(0.5, ofColor: StyleKitMarkSix.red).CGColor, StyleKitMarkSix.red.CGColor], [0, 0, 1])!
static let blueGradient: CGGradient = CGGradientCreateWithColors(CGColorSpaceCreateDeviceRGB(), [UIColor.whiteColor().CGColor, UIColor.whiteColor().blendedColorWithFraction(0.5, ofColor: StyleKitMarkSix.blue).CGColor, StyleKitMarkSix.blue.CGColor], [0, 0, …
Run Code Online (Sandbox Code Playgroud)

swift swift3

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

swift3将int转换为indexPath

有没有机会将一个Integer转换为indexPath?

因为按下按钮时我需要从单元格输出文本.或者我可以使用String作为Button的发送者吗?

cell.uncheckbox.tag = indexPath.row as! IndexPath

cell.uncheckbox.addTarget(self, action: #selector(ViewController.btnClicked), for: UIControlEvents.touchUpInside)




func btnClicked(sender: UIButton)
{

    let row = sender.tag
    let cell = tableView.dequeueReusableCell(withIdentifier: "LabelCell", for: row) as! TableViewCell;

    print("cellentext \(cell.textLabel?.text)")
}
Run Code Online (Sandbox Code Playgroud)

谢谢你的帮助!

swift3

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

这是将Double翻转到最接近的一半的良好实现吗?

我想绕到最接近的一半Double.例如,如果数字是3.76我希望它舍入到4.另一方面,如果数字是3.74我希望它舍入到3.5.

我想出了这段代码:

extension Double {
    func roundToClosestHalf() -> Double {
        let upperLimit = ceil(self)
        let difference = upperLimit - self
        if difference <= 0.25 {
            return ceil(self)
        } else if difference > 0.25 && difference < 0.75 {
            return upperLimit - 0.5
        } else {
            return floor(self)
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

有没有更有效/更好的方法来做到这一点?

let x = 3.21.roundToClosestHalf() // 3
Run Code Online (Sandbox Code Playgroud)

rounding swift

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

我的带有自动布局约束的 Swift 4 UIScrollView 不滚动

在将视图添加到我的应用程序之前,我已经创建了一个小型演示游乐场来使其工作。

我有一个滚动视图,它将包含许多水平滚动的按钮。我知道这些按钮需要进入滚动视图中的容器视图,并且也创建了它。我最初使用自动布局约束来创建所有这些,但现在尝试使用常量来确保内容视图大于滚动视图。但是,按钮仍然不会滚动......我错过了什么吗?滚动视图不适用于自动布局吗?

我也在我的 iPad 上以编程方式执行所有这些操作,因此不幸的是,使用界面构建器的解决方案不是一种选择...

这是完整的代码:

import UIKit
import PlaygroundSupport

class FilterViewController: UIViewController {
    var filterView: UIView!
    var scrollView: UIScrollView!
    var containerView: UIView!

    override func loadView() {
        filterView = UIView()
        view = filterView
        view.backgroundColor = #colorLiteral(red: 0.909803926944733, green: 0.47843137383461, blue: 0.643137276172638, alpha: 1.0)

        scrollView = UIScrollView()
        scrollView.backgroundColor = #colorLiteral(red: 0.474509805440903, green: 0.839215695858002, blue: 0.976470589637756, alpha: 1.0)
        view.addSubview(scrollView)
        scrollView.translatesAutoresizingMaskIntoConstraints = false
        scrollView.topAnchor.constraint(equalTo:view.topAnchor, constant:40).isActive = true
        scrollView.leadingAnchor.constraint(equalTo:view.leadingAnchor).isActive = true
        scrollView.widthAnchor.constraint(equalTo:view.widthAnchor).isActive = true
        scrollView.heightAnchor.constraint(equalToConstant: 200).isActive = true
        scrollView.isScrollEnabled = true

        containerView = UIView() …
Run Code Online (Sandbox Code Playgroud)

uiscrollview ios programmatically-created swift swift-playground

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

Swift:协议方法作为目标动作中的动作

我想要一个协议:

protocol CameraButtonDelegate: class {
    func cameraButtonDidPress(_ sender: UIButton)
}
Run Code Online (Sandbox Code Playgroud)

因此,我可以将任何客户端分配给按钮,例如:

cameraButton.addTarget(delegate, action: #selector(cameraButtonDidPress), for: .touchUpInside)
Run Code Online (Sandbox Code Playgroud)

但是,它不能编译,因为我必须在中指定特定功能action,例如:

cameraButton.addTarget(delegate, action: #selector(AAPLViewController.cameraButtonDidPress), for: .touchUpInside)
Run Code Online (Sandbox Code Playgroud)

如果我想通过一个按钮将多个客户作为目标,该如何解决此问题?

delegation uibutton target-action ios swift

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

如何设置相对于超级视图高度的topAnchor约束

我有两种看法:toastViewviewtoastView是 的子视图view。我想toastView在 y 轴上定位view高度的 80%。如何在代码中使用常量来做到这一点?

我假设有一个类似的方法:

[toastView.topAnchor constraintEqualToAnchor:view.heightAnchor multiplier:0.8].active = YES;
Run Code Online (Sandbox Code Playgroud)

但我不能混合NSLayoutDimension(宽度和高度)和NSLayoutYAxisAnchor(X 和 Y)


这就是它在设计中的样子:

设计方案

objective-c autolayout swift ios-autolayout

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

如何创建 SwiftUI RoundedStar 形状?

这是一个自我回答的问题,在 Stack Overflow 上完全可以接受(甚至鼓励)。重点是分享对他人有用的东西。

SwiftUI 有一个RoundedRectangle Shape. 如果有一个带有圆形尖端的五角星,可用于填充、剪切和动画,那就太好了。

这个Stack Overflow 答案展示了RoundedStar如何UIView 使用UIBezierPath.

这段代码如何改编为可以动画的SwiftUI代码?Shape

在此输入图像描述

animation shapes swift swiftui

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

What is the difference between @StateObject and @ObservedObject in child views in swiftUI

I created a Model like this:

class TestModel: ObservableObject {
    @Published var num: Int = 0
}
Run Code Online (Sandbox Code Playgroud)

Model is be used in "Home" view and "Home"s child view "HomeSub"

struct Home: View {
    
    @StateObject var model = TestModel()
    
    var body: some View {
        NavigationView(content: {
            NavigationLink(destination: HomeSub(model: model)) { Text("\(model.num)") }
        })
    }
}
Run Code Online (Sandbox Code Playgroud)
struct HomeSub: View {
   //1
    @StateObject var model = TestModel()
   //2
    @ObservedObject var model = TestModel()

    var body: some View {
        VStack {
            Text("\(model.num)")
                .padding()
                .background(Color.red) …
Run Code Online (Sandbox Code Playgroud)

swift swiftui combine observedobject

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