我无法想到在easy init中从嵌套枚举中检索原始值的方法。由于fontName.rawValue
没有任何案例,因此Custom
无法工作。有什么建议吗?
extension UIFont {
enum Custom {
enum Roboto: String {
case Regular = "RobotoRegular"
}
enum SanFrancisco: String {
case Semibold = "SFSemibold"
}
}
convenience init?(name fontName: Custom, size fontSize: CGFloat) {
self.init(name: fontName.rawValue, size: fontSize)
}
}
// Example Usage
UIFont(name: .Roboto.Regular, size: 18)
答案 0 :(得分:3)
我可以采用稍微不同的方法,但是使用字体也很容易。首先,您需要为字体枚举创建协议,然后为扩展提供默认方法,如下所示:
protocol CustomFontsProtocol {
var fontName: String { get }
}
extension CustomFontsProtocol {
func size(size: CGFloat) -> UIFont {
return UIFont(name: fontName, size: size)!
}
}
现在为你的枚举你可以像这样创建它:
enum CustomFonts {
enum Roboto: CustomFontsProtocol {
case Regular
var fontName: String {
switch self {
case Regular: return "RobotoRegular"
}
}
}
enum SanFrancisco: CustomFontsProtocol {
case Semibold
var fontName: String {
switch self {
case Semibold: return "SFSemibold"
}
}
}
}
这将允许您像这样调用字体:
CustomFonts.SanFrancisco.Semibold.size(18)
答案 1 :(得分:1)
这是最简单的替代实现:
$("#btnEmail").click(function () {
tinyMCE.triggerSave(true, true);
$('#emailform').submit();
$.ajax({
url: '@Url.Action("Email")',
type: "POST",
data: $('#emailform').serialize(),
dataType: "json",
traditional: true,
//SignalR
success: function () {
// Declare a proxy to reference the hub.
var notifications = $.connection.statusLog;
notifications.client.updateStatus = function () {
getExportStatus()
};
// Start the connection.
$.connection.hub.start().done(function () {
alert("connection started")
getExportStatus();
}).fail(function (e) {
alert(e);
});
}
});
function getExportStatus() {
var tbl = $('#statusTable');
$.ajax({
url: '@Url.Action("GetExportStatus")',
contentType: 'application/html ; charset:utf-8',
type: 'GET',
dataType: 'html'
}).success(function (result) {
tbl.empty().append(result);
}).error(function () {
});
}
});