小编use*_*176的帖子

Swift:使用大量属性初始化模型类的正确方法

如何用很多属性初始化类/结构?

如果没有Swift上下文可能会问这个问题,但是Swift给它带来了一些味道,所以我在标题和标签中添加了Swift标签.

假设你有一个User有20个属性的类.他们中的大多数不应该是零或空.让我们假设这些属性不是相互依赖的.让我们假设它的33%应该是let类的逻辑().假设它们中至少有65%没有有意义的默认值.你将如何设计这个类并初始化它的实例?

到目前为止,我几乎没有什么想法,但似乎对我来说似乎并不完全令人满意:

  • 将所有属性线性地放在类中并创建巨大的init方法:

    class User {
        // there is 20 properties like that
        let id : String
        let username : String
        let email : String
        ...
        var lastLoginDate : Date
        var lastPlayDate : Date
    
        // then HUUUUGE init
        init(id: String, 
             username: String,
             ...
             lastPlayDate: Date) {
        }
    }
    
    Run Code Online (Sandbox Code Playgroud)
  • 尝试将属性分组为子类型并分别处理较小的inits

    class User {
        struct ID {
            let id : String
            let username : String
            let email : String
        }
        struct Activity {
            var lastLoginDate : …
    Run Code Online (Sandbox Code Playgroud)

design-patterns initialization optional swift

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

迅速。在内部协议中声明私有函数

我怎样才能实现这样的事情(不编译):

internal protocol InternalPrivateMix {
    private func doPrivately()
    internal func doInternaly()
}
Run Code Online (Sandbox Code Playgroud)

基本上我想做出一个承诺,确认类私下实现了一些功能。这更多用于自我文档。显然,我可以在我的类中实现这些功能,而无需正式遵守协议,并编写描述每个类都应该实现此功能的文档。不过,如果我能更正式地将我的意图传达给其他开发人员,那就太好了。

编辑:我试图在一个文件中实现两个协议,一个私有的,一个内部的,如@creeperspeak 所建议的。但是我不能在其他文件中遵守私有协议,所以它不起作用。

protocols swift

7
推荐指数
1
解决办法
7291
查看次数

核心音频(音频单元)音频会话和MPVolumeView

我在VOIP应用程序上工作.我使用Core Audio Audio Units播放和录制音频.我需要能够操纵音量和输出设备.我正在尝试使用MPVolumeView设置音量并选择输出设备.

我的问题是:当我开始使用(开始播放和捕获RemoteIO音频单元)音频单元时,似乎MPVolumeView不再控制我的会话音量,而是控制系统范围的声音首选项.同时,硬件按钮控制音频单元播放的声音音量.此外,当我开始使用音频单元MPVolumeView开始显示按钮来更改输出设备但在此之前它没有.

似乎MPVolumeView控制某些系统范围音频会话的音量,但是当我开始使用音频单元时,会创建另一个应用程序范围(甚至音频单元宽)音频会话并用于播放声音.

那么问题是如何为我的Core Audio音频会话制作MPVolumeView控制音量?

我会很感激为什么会发生这种情况.我几乎整天都在谷歌上搜索,我发现有些人有相关问题,但没有任何提示:(.如果需要,我也可以发布更多细节.

iphone core-audio audiounit ios mpvolumeview

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

UICollectionView 自定义布局。不显示或查询补充视图

我正在尝试创建一个简单的自定义布局以便UICollectionView以编程方式使用(即没有 Interface Builder)。

我根据文档做所有事情:

  1. 子类UICollectionViewLayout并准备我的布局
  2. 覆盖layoutAttributesForSupplementaryView(ofKind elementKind: String, at indexPath: IndexPath)并返回相应的布局属性
  3. collectionView(_ collectionView: UICollectionView, viewForSupplementaryElementOfKind kind: String, at indexPath: IndexPath)在我返回补充视图的地方添加实现

我的问题是既不

collectionView(_ collectionView: UICollectionView, viewForSupplementaryElementOfKind kind: String, at indexPath: IndexPath)
Run Code Online (Sandbox Code Playgroud)

也不

layoutAttributesForSupplementaryView(ofKind elementKind: String, at indexPath: IndexPath)
Run Code Online (Sandbox Code Playgroud)

正在被调用,所以我看不到我的补充意见。

我已经仔细检查了我的实现布局和补充视图的创建,但我仍然无法让它工作。

uikit ios uicollectionview uicollectionviewlayout

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

导出到xliff时,Xcode6不会导出标头中定义的NSLocalizedStrings()

好的标题几乎都说明了.

我正在使用Xcode6.1(6A1052d).

我有一个头文件(LocalString.h),我在其中定义了一些常见的NSLocalizedStrings

#define LocalStringYESButtonTitle NSLocalizedStringWithDefaultValue(@"YES", nil, [NSBundle mainBundle], @"YES", @"General YES button label")
Run Code Online (Sandbox Code Playgroud)

现在,当我在".xliff"文件中"导出本地化..."时,我没有在标题中定义字符串.

有任何想法吗?

localization objective-c ios xcode6

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