小编Hon*_*ney的帖子

如何在协议扩展中定义初始值设定项?

protocol Car {
     var wheels : Int { get set}

     init(wheels: Int)

}

extension Car {
    init(wheels: Int) {
        self.wheels = wheels
    }
}
Run Code Online (Sandbox Code Playgroud)

on self.wheels = wheels我得到了错误

Error: variable 'self' passed by reference before being initialized
Run Code Online (Sandbox Code Playgroud)

如何在协议扩展中定义初始化程序?

protocols initialization swift swift-extensions swift2

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

如何在Swift中旋转图像?

我无法将图像快速旋转90度.我写了下面的代码,但有一个错误,不编译

  func imageRotatedByDegrees(oldImage: UIImage, deg degrees: CGFloat) -> UIImage {

    //Calculate the size of the rotated view's containing box for our drawing space
    let rotatedViewBox: UIView = UIView(frame: CGRect(x: 0, y: 0, width: oldImage.size.width, height: oldImage.size.height))
    let t: CGAffineTransform = CGAffineTransform(rotationAngle: degrees * CGFloat(M_PI / 180))
    rotatedViewBox.transform = t
    let rotatedSize: CGSize = rotatedViewBox.frame.size

    //Create the bitmap context
    UIGraphicsBeginImageContext(rotatedSize)
    let bitmap: CGContext = UIGraphicsGetCurrentContext()!

    //Move the origin to the middle of the image so we will rotate and scale around …
Run Code Online (Sandbox Code Playgroud)

animation uiview uiviewanimation ios swift

45
推荐指数
7
解决办法
7万
查看次数

如何以编程方式感知iPhone静音开关?

我似乎无法在SDK中找到如何以编程方式感知iPhone上的静音按钮/开关.当我的应用程序播放背景音乐时,它会正确响应音量按钮,而我没有任何代码可以遵循,但是,当我使用静音开关时,它只是继续播放.

如何测试静音的位置?

(注意:我的程序有自己的静音开关,但我希望物理开关覆盖它.)

谢谢!

audio ios avaudiosession

44
推荐指数
5
解决办法
4万
查看次数

Swift枚举中是否可以存在关联值和原始值?

Swift书中有一些例子分别展示了相关的值和原始值,有没有办法用两个特征一起定义枚举?

我试图将它们组合在一起但却出错了:

enum Barcode :String {
    case UPCA(Int, Int, Int) = "Order 1" // Enum with raw type cannot have cases with arguments
    case QRCode(String) = "Order 2" // Enum with raw type cannot have cases with arguments
}
Run Code Online (Sandbox Code Playgroud)

enums swift

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

如何在Core Data中使用swift 4 Codable?

Codable似乎是一个非常令人兴奋的功能.但我想知道我们如何在核心数据中使用它?特别是,是否可以直接从/向NSManagedObject编码/解码JSON?

我尝试了一个非常简单的例子:

在此输入图像描述

并定义Foo自己:

import CoreData

@objc(Foo)
public class Foo: NSManagedObject, Codable {}
Run Code Online (Sandbox Code Playgroud)

但是当它像这样使用时:

let json = """
{
    "name": "foo",
    "bars": [{
        "name": "bar1",
    }], [{
        "name": "bar2"
    }]
}
""".data(using: .utf8)!
let decoder = JSONDecoder()
let foo = try! decoder.decode(Foo.self, from: json)
print(foo)
Run Code Online (Sandbox Code Playgroud)

编译器因此错误而失败:

super.init isn't called on all paths before returning from initializer
Run Code Online (Sandbox Code Playgroud)

目标文件是定义的文件 Foo

我想我可能做错了,因为我甚至没有通过NSManagedObjectContext,但我不知道在哪里坚持下去.

核心数据是否支持Codable

core-data swift swift4 xcode9 codable

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

Iphone - 当每个单元格高度是动态时,何时计算tableview的heightForRowAtIndexPath?

我已经多次看过这个问题,但令人惊讶的是,我没有看到一致的答案,所以我会自己尝试一下:

如果你有一个包含你自己的自定义UITableViewCells的tableview,它包含UITextViews和UILabels,其高度必须在运行时确定,你应该如何确定heightForRowAtIndexPath中每一行的高度?

最明显的第一个想法是通过计算并然后对cellForRowAtIndexPath内单元格内每个视图的高度求和来计算每个单元格的高度,并存储该最终总高度以供以后检索.

但这不起作用,因为cellForRowAtIndexPath被称为AFTER heightForRowAtIndexPath.

我唯一能想到的是在viewDidLoad中进行所有计算,然后创建所有UITableViewCells,计算单元格高度并将其存储在UITableViewCell子类内的自定义字段中,并将每个单元格放在NSMutableDictionary中,其中indexPath为键,然后使用cellForRowAtIndexPath和heightForRowAtIndexPath中的indexPath从字典中检索单元格,返回自定义高度值或单元格对象本身.

这种方法似乎是错误的,因为它没有使用dequeueReusableCellWithIdentifier,而是我将所有单元格一次加载到我的控制器中的字典中,并且委托方法只是从字典中检索正确的单元格.

我没有看到任何其他方法来做到这一点.这是一个坏主意 - 如果是这样,这样做的正确方法是什么?

uitableview reloaddata ios heightforrowatindexpath

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

有没有办法让iOS查看哪个孩子有第一响应者身份?

在Mac OS X中,您可以找到第一个响应者:

[[self window] firstResponder]
Run Code Online (Sandbox Code Playgroud)

在iOS中有什么办法吗?或者您是否需要枚举子控件isFirstResponder并向每个控件发送消息?

cocoa-touch uiresponder ios responder-chain

42
推荐指数
4
解决办法
3万
查看次数

什么是刷新令牌的意义?

我必须承认我已经有很长一段时间没有这个问题,从来没有真正理解过.

说auth令牌就像一个保险箱的钥匙,当它到期时它不再可用了.现在我们给了一个魔术刷新令牌,可用于获取另一个可用的键,另一个......直到魔术键到期.那么为什么不将auth令牌的到期时间设置为与刷新令牌相同?为什么这么麻烦?

它的正当理由是什么,也许是历史原因?真的很想知道.谢谢

authentication oauth access-token refresh-token

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

Swift:什么是分割[String]的正确方法,导致[[String]]具有给定的子阵列大小?

从一个大的[String]和一个给定的子数组大小开始,我可以将这个数组拆分成更小的数组的最佳方法是什么?(最后一个数组将小于给定的子数组大小).

具体例子:

最大分割尺寸2分割["1","2","3","4","5","6","7"]

代码会产生[["1","2"],["3","4"],["5","6"],["7"]]

显然我可以手动更多一点,但我觉得像map()或reduce()这样的东西可以做我想要的非常漂亮的东西.

algorithm ios swift

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

Swift委托 - 何时在委托上使用弱指针

有人可以解释何时何时不对Swift中的委托指针使用"弱"赋值,为什么?

我的理解是,如果你使用一个未定义为类的协议,你不能也不想将你的委托指针指向weak.

protocol MyStructProtocol{
    //whatever
}

struct MyStruct {
    var delegate: MyStructProtocol?
}
Run Code Online (Sandbox Code Playgroud)

但是,当您的协议被定义为类类型协议时,您是否要将您的委托设置为弱指针?

protocol MyClassProtocol:Class{
    //whatever
}

class MyClass {
    weak var delegate: MyClassProtocol?
}
Run Code Online (Sandbox Code Playgroud)

我对么?在Apple的快速指南中,类协议示例并未使用弱分配,但在我的测试中,如果我的代表没有被弱引用,我会看到强大的引用周期.

delegates memory-leaks memory-management swift strong-reference-cycle

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