我想知道是否有任何关于在WWDC 2015中引入的XCode 7中的新UI测试的文档.如果没有文档,是否有任何用户生产的版本值得关注?
谢谢
如果我定义了以下枚举:
enum CardRank {
case number(Int)
case jack
case queen
case king
case ace
}
Run Code Online (Sandbox Code Playgroud)
let cardRank = CardRank.number(5)
if case .number = cardRank {
// is a number
} else {
// something else
}
Run Code Online (Sandbox Code Playgroud)
但是,我想将“这是一个数字”的布尔结果分配给一个变量,而不是使用 if 语句。
例如这样的事情:
let isNumber = (case .number = cardRank)
Run Code Online (Sandbox Code Playgroud)
但是,这给了我编译器错误:
error: expected expression in list of expressions
let isNumber = (case .number = cardRank)
^
Run Code Online (Sandbox Code Playgroud)
是否有类似的 1 行语法来使这种分配工作?
我得到的最接近的是这个,但它非常混乱:
let isNumber: Bool = { if case …Run Code Online (Sandbox Code Playgroud) 我有2个简单的表和SQL Server Express中定义的外键:
产品
公司
FK_Product_Company
我创建了一个ADO.NET实体数据模型并将所有表添加到其中..edmx文件显示设计器中的1对多关系.我用数据手动填充数据库,以确保每个产品都有公司.但是,每当我尝试访问产品的公司时,它总是返回null而不是公司的实例.
例如,在C#中运行以下代码,返回null:
var _db = new MyDBEntities();
var product = (from p in _db.Product
where p.ProductID == 3
select p).First();
product.Company // == null
Run Code Online (Sandbox Code Playgroud)
我有什么步骤可以让它工作吗?
谢谢
运行以下SQL,正确返回公司记录.
SELECT Company.*
FROM Product
LEFT JOIN Company ON (Product.CompanyID = Company.CompanyID)
WHERE Product.ProductID = 3
Run Code Online (Sandbox Code Playgroud)
我要做的下一件事就是调试这个问题,就是运行以下代码:
var _db = new MyDBEntities();
var product = (from p in _db.Product
where p.ProductID == 3
select p).First();
var …Run Code Online (Sandbox Code Playgroud) 假设我有一个带签名的方法:
+ (NSString *) myFormattedString:(NSString *)format, ...;
Run Code Online (Sandbox Code Playgroud)
我希望它在我的选择之前添加一个字符串(例如@"Foo:").我想最好的方法是使用[myString initWithFormat:arguments:],但是你如何实现这个方法呢?
我尝试了以下操作,但是我收到了评论中指定的警告:
+ (NSString *) myFormattedString:(NSString *)format, ... {
char *buffer;
[format getCString:buffer maxLength:[format length] encoding:NSASCIIStringEncoding];
va_list args;
va_start(args, buffer); // WARNING: second parameter of 'va_start' not last named argument
NSString *str = [[NSString alloc] initWithFormat:format arguments:args];
[str autorelease];
return [NSString stringWithFormat:@"Foo: %@.", str];
}
Run Code Online (Sandbox Code Playgroud)
我假设va_start()可以接受(char*)的原因是因为我在STDARG(3)的手册页上看到的例子.如果我完全错误的话,请随意完全重写该方法.
我还没有找到使用iPhone库中私有API所需步骤的完整列表.
特别是,我想知道如何获取头文件,如果它们甚至是必需的,如何让它编译(当我只是添加头,它抱怨函数没有定义),以及什么资源可以用于了解私有API(例如来自其他用户的体验,例如http://iphonedevwiki.net/,其中有一些).
我在其他地方读过,人们建议使用class-dump来获取标题.有没有替代方法?我注意到有一些 iPhone私有SDK的存储库,你会推荐哪些最新的资源?
以前 关于私有API文档的大多数问题都与Erica Sadun的网站有关,该网站似乎没有文档(左边的所有链接都被删掉).
请保存关于不使用私有API的评论......我知道最大的风险:
我说的是合法用途,例如:
如何将伪元素selector(:after)与属性selector([title])组合?
我尝试过使用div[title]:after,但这在Chrome中不起作用.
HTML:
<div title="foo">This div has a title.</div>
<div>This div does not have a title.</div>
Run Code Online (Sandbox Code Playgroud)
CSS:
div:after {
content: "NO";
}
div[title]:after {
content: "YES";
}
Run Code Online (Sandbox Code Playgroud)
它在每个div的末尾显示"YES",当它在第二个div之后显示"NO"时.
我正在运行Chrome 17.0.963.38.它似乎在Safari 5.1.2中运行良好.
我可以使用类别扩展UIView,但是它只适用于实现特定协议(WritableView)的子类吗?
即我可以做以下的事情吗?
@interface UIView<WritableView> (foo) // SYNTAX ERROR
- (void)setTextToDomainOfUrl:(NSString *)text;
- (void)setTextToIntegerValue:(NSInteger)value;
- (void)setCapitalizedText:(NSString *)text;
@end
@implementation UIView<WritableView> (foo)
// implementation of 3 above methods would go here
@end
Run Code Online (Sandbox Code Playgroud)
想象一下,我想将以下类别函数添加到任何实例UILabel:
[label setTextToDomainOfUrl:@"http://google.com"];
Run Code Online (Sandbox Code Playgroud)
这只是设置UILabel的text属性google.com.
同样地,我希望能够在其他几个类上调用此函数:
[button setTextToDomainOfUrl:@"http://apple.com"]; // same as: [button setTitle:@"apple.com" forState:UIControlStateNormal];
[textField setTextToDomainOfUrl:@"http://example.com"]; // same as: textField.text = @"example.com"
[tableViewCell setTextToDomainOfUrl:@"http://stackoverflow.com"]; // same as: tableViewCell.textLabel.text = @"stackoverflow.com"
Run Code Online (Sandbox Code Playgroud)
假设到目前为止我对我的设计非常满意,并且我希望为所有4个类增加2个方法:
[label setTextToIntegerValue:5] // same as: label.text = [NSString stringWithFormat:@"%d", 5]; …Run Code Online (Sandbox Code Playgroud) 我暂停了我的应用程序并尝试将某些内容打印到控制台.(例如po foo()).这样做之后,我收到以下消息:
错误:执行被中断,原因:断点2.1.
该进程已在执行前返回到该状态.
但是,该功能没有断点.为什么它会向我显示此错误而不执行该功能?
这是在Xcode 4.6上.
通常,如果您将UITextField设置为第一响应者,viewDidLoad或者viewWillAppear当视图控制器被推入导航堆栈时,您将获得一个动画,其中视图控制器从右侧滑入,键盘已经向上(即没有双动画) :
但是,当我使用自动布局并根据键盘大小控制视图的布局时,会导致奇怪的动画.在这种情况下,我的按钮有一个约束到superview的底部,我在键盘通知事件中更新其常量属性.
(注意按钮,占位符和标签在推送期间如何向上动画.还要注意光标如何从占位符文本下方开始并向上浮动直到它到达占位符.)
根本问题似乎是,当通知被触发时,它已经在动画块(动画导航控制器的动画块)中,然后在现有动画块中触发另一个动画块(即,self.view.layoutIfNeeded()以便自动布局更改动画).
当然我可以在viewDidAppear中调用becomeFirstResponder ,但后来我得到了两个动画.我想利用键盘已启动的行为,因此界面看起来更具响应性(理想情况下保持接近250毫秒).
我如何处理UIKeyboardWillShowNotification,以便当用户点击UITextField并且在推动视图控制器时使用我上面的理想动画时它将同时工作?
UIKeyboardAnimationDurationUserInfoKey这是0.35一个推动过程,并且0.25当用户点击一个的UITextField.如果定制动画,Apple更改动画等,这很容易破坏.viewWillAppear(preventAnimationBlock = true)和viewDidAppear(preventAnimationBlock = false)中设置一个标志.这似乎是最安全的方法,并产生我想要的精确动画.但是,维持状态是不可取的.setNeedsLayout和layoutIfNeeded,而该解决方案在过去的工作,它不与上面的按钮例子工作.这将导致标签和文本视图无法正确设置动画,但该按钮仍将无法正确显示动画.layoutIfNeeded在那种情况下我根本不会打电话.我尝试使用其中一种方法来解决这个问题,但没有一种方法可行.可能是因为这是Apple在内部使用的某种隐藏/魔术动画块.想象一下,我们有这个完美适用的代码n >= 0.
func fibonacci(n: Int) -> Int {
var memo = [0,1]
for var i = 2; i <= n; i++ {
memo.append(memo[i-1] + memo[i-2])
}
return memo[n]
}
Run Code Online (Sandbox Code Playgroud)
如果由于即将发生的Swift 3.0更改而删除了C-style for循环,我会得到这样的结果:
func fibonacci(n: Int) -> Int {
var memo = [0,1]
for i in 2...n {
memo.append(memo[i-1] + memo[i-2])
}
return memo[n]
}
Run Code Online (Sandbox Code Playgroud)
虽然这可以正常工作n >= 2,但数字失败0并1出现此错误消息:
致命错误:无法使用end <start形成Range
什么是为了解决这个问题,才能正常运作为最简洁的方式0和1?
(注意:负数使应用程序崩溃是可以的,甚至是可取的.)
注意:我意识到我可以添加一个警卫声明:
guard n …
objective-c ×2
swift ×2
xcode ×2
.net ×1
autolayout ×1
cocoa-touch ×1
css ×1
enums ×1
for-loop ×1
ios ×1
iphone ×1
keyboard ×1
llvm ×1
nsstring ×1
range ×1
resources ×1
ui-testing ×1