我有一个非常简单的UITextView子类,它添加了"占位符"功能,您可以在Text Field对象中找到它.这是我的子类代码:
import UIKit
import Foundation
@IBDesignable class PlaceholderTextView: UITextView, UITextViewDelegate
{
@IBInspectable var placeholder: String = "" {
didSet {
setPlaceholderText()
}
}
private let placeholderColor: UIColor = UIColor.lightGrayColor()
private var textColorCache: UIColor!
override init(frame: CGRect) {
super.init(frame: frame)
self.delegate = self
}
required init(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
self.delegate = self
}
func textViewDidBeginEditing(textView: UITextView) {
if textView.text == placeholder {
textView.text = ""
textView.textColor = textColorCache
}
}
func textViewDidEndEditing(textView: UITextView) {
if textView.text == "" …Run Code Online (Sandbox Code Playgroud) 此文章介绍如何使用Crashlytics在Objective-C登录.但是,在完成将Crashlytics和Fabric属性引用到我的项目中的安装步骤之后,我似乎无法访问该方法.
查看Crashlytics.h文件,我可以看到它使用编译器标志定义:
#ifdef DEBUG
#define CLS_LOG(__FORMAT__, ...) CLSNSLog((@"%s line %d $ " __FORMAT__), __PRETTY_FUNCTION__, __LINE__, ##__VA_ARGS__)
#else
#define CLS_LOG(__FORMAT__, ...) CLSLog((@"%s line %d $ " __FORMAT__), __PRETTY_FUNCTION__, __LINE__, ##__VA_ARGS__)
#endif
Run Code Online (Sandbox Code Playgroud)
这个块似乎根据编译器标志包装CLSNLog和CLSLog函数.
所以,我想我只是直接去源,我试图直接从swift文件中引用CLSLog.仍然没有运气:
我的桥接,Header.h:
#import <Crashlytics/Crashlytics.h>
Run Code Online (Sandbox Code Playgroud)
Log.swift:
import Foundation
import Fabric
import Crashlytics
func Log(message: String) {
NSLog("%@", message)
CLS_LOG("%@", message)
CLSLog("%@", message)
}
Run Code Online (Sandbox Code Playgroud)
Log函数中的最后两行抛出错误Use of unresolved identifier.除日志记录功能外,Crashlytics崩溃报告工作正常.根据这篇文章,已经实现了对Swift的日志记录支持.
至于版本,我正在运行最新版本的Fabric/Crashlytics(12月发布,在本文发布时).
(有趣的是,我可以看到/使用CLSLogv()...)
有没有人知道合并CLS_LOG用于Swift项目的正确方法?
从第一个XCode 6/iOS 8 beta版本开始,我一直在开发和关闭应用程序几个月.我最喜欢的功能之一是实时渲染,使用@IBDesignableSwift中的标签.
我无法获得单一的东西来渲染.我认为一定是因为它是测试版,所以我决定等待完整版本再次尝试.它仍然失败了.我认为在我的代码中可能存在来自beta版本的工件,所以我废弃它并重新开始.它仍然无法正常工作.当然,这些错误现在更具描述性.
这是我的代码:
import UIKit
@IBDesignable class MyButton : UIButton {
let UNPRESSED_COLOR = UIColor(red: 221.0/256.0, green: 249.0/256.0, blue: 14.0/256.0, alpha: 1.0)
let PRESSED_COLOR = UIColor(red: 166.0/256.0, green: 187.0/156.0, blue: 11.0/256.0, alpha: 1.0)
var buttonColorValue: UIColor
let TEXT_COLOR = UIColor(red: 72.0/256.0, green: 160.0/256.0, blue: 5.0/256.0, alpha: 1.0)
required init(coder: NSCoder) {
self.buttonColorValue = UNPRESSED_COLOR
super.init(coder: coder)
// Initialization code
self.setTitleColor(TEXT_COLOR, forState: UIControlState.Normal)
self.setTitleColor(TEXT_COLOR, forState: UIControlState.Highlighted)
self.setTitleColor(TEXT_COLOR, forState: UIControlState.Selected)
}
override func touchesBegan(touches: NSSet, withEvent event: …Run Code Online (Sandbox Code Playgroud) 为防止AppPool每20分钟回收一次,我想在Azure Web角色启动时删除IIS AppPool空闲超时.我的网站是一个Web应用程序项目.
我该怎么做呢?
我正在尝试为将继承的MVC 4构建自定义模型绑定器DefaultModelBinder.我想它在拦截任何接口的任何结合水平并尝试从称为一个隐藏字段加载所需的类型AssemblyQualifiedName.
这是我到目前为止(简化):
public class MyWebApplication : System.Web.HttpApplication
{
protected void Application_Start()
{
ModelBinders.Binders.DefaultBinder = new InterfaceModelBinder();
}
}
public class InterfaceModelBinder : DefaultModelBinder
{
public override object BindModel(ControllerContext controllerContext,
ModelBindingContext bindingContext)
{
if (bindingContext.ModelType.IsInterface
&& controllerContext.RequestContext.HttpContext.Request.Form.AllKeys.Contains("AssemblyQualifiedName"))
{
ModelBindingContext context = new ModelBindingContext(bindingContext);
var item = Activator.CreateInstance(
Type.GetType(controllerContext.RequestContext.HttpContext.Request.Form["AssemblyQualifiedName"]));
Func<object> modelAccessor = () => item;
context.ModelMetadata = new ModelMetadata(new DataAnnotationsModelMetadataProvider(),
bindingContext.ModelMetadata.ContainerType, modelAccessor, item.GetType(), bindingContext.ModelName);
return base.BindModel(controllerContext, context);
}
return base.BindModel(controllerContext, bindingContext);
}
}
Run Code Online (Sandbox Code Playgroud)
示例Create.cshtml文件(简化):
@model …Run Code Online (Sandbox Code Playgroud) 我有一个简单的选项卡式应用程序,其第一个选项卡是UITableViewController.填充一些数据后,我注意到表格视图的顶部与状态栏重叠.
我试过搞乱edgesForExtendedLayout和类似的设置,但没有找到神奇的组合.有谁知道如何纠正这个?
重现步骤:
UIViewController并用a替换UITableViewControllerUITableView用一些数据填充以下是设置和问题的几个屏幕截图:

我一直在尝试并且未能找到使用Entity Framework Code First加密SQL数据的好方法.我必须在前面加上我在Azure中托管并且无法访问本机SQL加密.
从SecurEntity获取一个页面,我已经完全实现了一种利用SaveChanges和ObjectMaterialized来处理实体加密/解密的方法,但在测试中我发现这一点太不可靠了.
以下是一些实现的示例:
public override int SaveChanges()
{
var pendingEntities = ((IObjectContextAdapter)this).ObjectContext.ObjectStateManager
.GetObjectStateEntries(EntityState.Added | EntityState.Modified)
.Where(en => !en.IsRelationship).ToList();
foreach (var entry in pendingEntities) //Encrypt all pending changes
EncryptEntity(entry.Entity);
int result = base.SaveChanges();
foreach (var entry in pendingEntities) //Decrypt updated entities for continued use
DecryptEntity(entry.Entity);
return result;
}
void ObjectMaterialized(object sender, ObjectMaterializedEventArgs e)
{
DecryptEntity(e.Entity);
}
Run Code Online (Sandbox Code Playgroud)
我已经看到其他帖子通过辅助属性手动加密/解密,如下所示:
public Value { get; set; }
[NotMapped]
public DecryptedValue
{
get { return Decrypt(this.Value); }
set { this.Value = …Run Code Online (Sandbox Code Playgroud) 为了解决与以编程方式将子视图添加到滚动视图相关的自动布局问题,我在整个互联网上遇到了许多引用,在各种情况下说要设置translatesAutoresizingMaskIntoConstraints = YES或translatesAutoresizingMaskIntoConstraints = NO根据具体情况.
但是,在Swift中,当我键入:
var view = UIView()
view.translatesAutoresizingMaskIntoConstraints = false
Run Code Online (Sandbox Code Playgroud)
我得到了内联错误:Cannot assign to 'translatesAutoresizingMaskIntoConstraints' in 'view'.为什么?因为,在检查时,您会发现它是无参数函数,而不是属性.
我已经通过子类化解决了这个问题,但是为了处理我正在处理的每个视图都是一个很大的不便,只是为了设置translatesAutoresizingMaskIntoConstraints:
class CardView: UIView {
override func translatesAutoresizingMaskIntoConstraints() -> Bool {
return false
}
}
Run Code Online (Sandbox Code Playgroud)
有没有人知道解决这个问题的方法,或者能否解释一般互联网理事会告诉你的内容与你在Swift中实际可以做的事情之间的差异?
我们注册了windows azure 90天免费试用版,创建了4个网站,2个虚拟服务器和2个SQL数据库.他们已经跑了大约一个月了,而且做得很好.
今晚,我接到一位用户的电话,说他们都没有.所以我去仪表板找到:

"有限"状态下没有工具提示,我在试用说明中找不到它们为何受限制的任何地方.有任何想法吗?
我有一个Swift Cocoa Touch Framework项目(我们称之为MySwiftFramework),它有一些漂亮的代码,我想在另一个项目/工作区中引用它.
在尝试引用该框架时,我在引用上述框架的swift类的代码中收到以下错误:
'MySwiftClass'不可用:找不到此类的Swift声明
我检查了自动生成的文件:MySwiftFramework.framework/Headers/MySwiftFramework-Swift.h它包括swift类的自动生成的头文件MySwiftFramework:
SWIFT_CLASS("_TtC16MySwiftFramework12MySwiftClass")
@interface MySwiftClass : NSObject
@property (nonatomic, copy) NSString * coolThingName;
- (instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end
Run Code Online (Sandbox Code Playgroud)
我可以让它工作的唯一方法是,如果我拖入MySwiftFramework工作区,我正试图引用它.然后它将编译,但是当我尝试归档应用程序时,它将项目归档为"Xcode Generic Archive"而不是"iOS App Archive".
必须有一种方法来通过嵌入MySwiftFramework.framework文件来引用快速框架.
有谁知道可能导致此错误的原因是什么?
ios ×6
swift ×4
azure ×3
c# ×3
xcode ×3
autolayout ×1
crashlytics ×1
encryption ×1
ibdesignable ×1
logging ×1
rendering ×1
storyboard ×1
uitableview ×1
xcode6 ×1