如何用很多属性初始化类/结构?
如果没有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)我怎样才能实现这样的事情(不编译):
internal protocol InternalPrivateMix {
private func doPrivately()
internal func doInternaly()
}
Run Code Online (Sandbox Code Playgroud)
基本上我想做出一个承诺,确认类私下实现了一些功能。这更多用于自我文档。显然,我可以在我的类中实现这些功能,而无需正式遵守协议,并编写描述每个类都应该实现此功能的文档。不过,如果我能更正式地将我的意图传达给其他开发人员,那就太好了。
编辑:我试图在一个文件中实现两个协议,一个私有的,一个内部的,如@creeperspeak 所建议的。但是我不能在其他文件中遵守私有协议,所以它不起作用。
我在VOIP应用程序上工作.我使用Core Audio Audio Units播放和录制音频.我需要能够操纵音量和输出设备.我正在尝试使用MPVolumeView设置音量并选择输出设备.
我的问题是:当我开始使用(开始播放和捕获RemoteIO音频单元)音频单元时,似乎MPVolumeView不再控制我的会话音量,而是控制系统范围的声音首选项.同时,硬件按钮控制音频单元播放的声音音量.此外,当我开始使用音频单元MPVolumeView开始显示按钮来更改输出设备但在此之前它没有.
似乎MPVolumeView控制某些系统范围音频会话的音量,但是当我开始使用音频单元时,会创建另一个应用程序范围(甚至音频单元宽)音频会话并用于播放声音.
那么问题是如何为我的Core Audio音频会话制作MPVolumeView控制音量?
我会很感激为什么会发生这种情况.我几乎整天都在谷歌上搜索,我发现有些人有相关问题,但没有任何提示:(.如果需要,我也可以发布更多细节.
我正在尝试创建一个简单的自定义布局以便UICollectionView以编程方式使用(即没有 Interface Builder)。
我根据文档做所有事情:
UICollectionViewLayout并准备我的布局layoutAttributesForSupplementaryView(ofKind elementKind: String, at indexPath: IndexPath)并返回相应的布局属性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)
正在被调用,所以我看不到我的补充意见。
我已经仔细检查了我的实现布局和补充视图的创建,但我仍然无法让它工作。
好的标题几乎都说明了.
我正在使用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"文件中"导出本地化..."时,我没有在标题中定义字符串.
有任何想法吗?
ios ×3
swift ×2
audiounit ×1
core-audio ×1
iphone ×1
localization ×1
mpvolumeview ×1
objective-c ×1
optional ×1
protocols ×1
uikit ×1
xcode6 ×1