小编Ile*_*ian的帖子

FactoryGirl搞砸了rake db:migrate进程

我在Ruby on Rails 3中使用Rspec(2.11.0)和FactoryGirl(4.0.0)进行TDD/BDD.我有一个类别模型的工厂:

FactoryGirl.define "Category" do
  factory :category do
    name "Foo"
  end
end
Run Code Online (Sandbox Code Playgroud)

如果我删除,创建然后在测试环境中迁移数据库我收到此错误:

rake aborted!
Could not find table 'categories'
Run Code Online (Sandbox Code Playgroud)

出现此问题的原因是FactoryGirl期望表已经存在(出于某些奇怪的原因).如果我从我的rails应用程序中删除spec文件夹并且这样做db:migrate,它可以工作.此外,如果我factory-girl-rails从我的标记,Gemfile因为:require => false它也有效(然后我必须发表评论,以便运行rspec).

我在这里找到了一些关于这个问题的信息:https://github.com/thoughtbot/factory_girl/issues/88

我有什么不对劲吗?如何在db:migration任务中"通过"FactoryGirl阶段?

bdd rake rspec ruby-on-rails factory-bot

30
推荐指数
2
解决办法
8570
查看次数

Objective-C方法调配性能

在Objective-C中使用方法调配时会出现什么性能损失?

哪个(如果有的话)编译器优化被消息调整打败了?

performance objective-c llvm clang method-swizzling

8
推荐指数
1
解决办法
273
查看次数

如果在明确指定类型时让它表现得很奇怪

假设我们有:

let a:Int? = nil

// block not executed - unwapping done, type is inferred
if let unwrapped_a = a {
    println(unwrapped_a)
}

// block not executed - unwrapping done, type is specified
if let unwrapped_a:Int = a {
    println(unwrapped_a)
}

// block gets executed - unwrapping not done, new local constant + assignment is done instead? 
if let not_unwrapped_a:Int? = a {
    println(not_unwrapped_a)
}
Run Code Online (Sandbox Code Playgroud)

那么我应该假设Swift在第一种情况下进行了解包,而在第二种情况下进行了分配吗?

这种语法是不是太接近造成混乱?我的意思是,是的,编译器警告您在使用时正在使用可选类型not_unwrapped_a,但仍然如此.

更新:

所以在Airspeed Velocity的回答之后,我发现另一个(但实际上是相同的)奇怪的情况:

if let not_unwrapped_a:Int???? = a {
    println(not_unwrapped_a)
} …
Run Code Online (Sandbox Code Playgroud)

syntax optional ios swift

6
推荐指数
1
解决办法
337
查看次数

如何在 iOS 上使用 EventKit 跨多个设备同步事件

假设我必须编写一个应用程序,该应用程序必须与设备上可用的日历之一同步。假设我有“Action”对象,它们有开始日期、结束日期、重复发生等。

设备 A:我创建了“Action”对象,然后使用 EventKit 将它们与名为“Foo”的 iCloud 日历同步。我得到了一些唯一标识符,我必须将它们与我的“Action”对象链接起来,以便知道将来要更新/删除哪个。然后我将我的“Action”对象与我自己的服务器同步。

设备 B:我从服务器获取“Action”对象。我修改它们。我必须更新日历项目。如果我没有在设备 B 上设置“Foo”日历会怎样?如果我拥有它会怎样?

我想我需要使用属性calendarItemExternalIdentifier而不是calendarItemIdentifier属性,以便在使用相同日历的设备之间唯一标识事件,对吗?

这是calendarItemExternalIdentifier在创建 calendarItem 的那一刻给出的吗?还是由 iCloud 服务器提供?我需要互联网连接才能工作吗?

calendarIdentifier物业的文件说明:

与日历完全同步将丢失此标识符。您应该制定一个计划来处理一个日历,该日历的标识符不再能够通过缓存其他属性来获取。

完全同步甚至意味着什么?

icalendar synchronization objective-c ios eventkit

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

Xcode 6.1与git一起表现得很奇怪

我经常使用来自XCode的一些git功能,例如:通过git status查看diff,blame,过滤器文件.除此之外,我几乎使用控制台.

但XCode开始表现得很奇怪.如果我试图看到差异,它说:

请求的修订版本中不存在此文件.

另一个例子 - 如果我有3个修改过的文件并尝试按git状态过滤(左下角,repo图标),它会这样做:有时只有2个文件显示为已修改 - 在2或3秒后显示第三个文件,但是不是前两个.它每隔2或3秒就会切换一次.

我尝试再次克隆回购.删除派生数据.从xcode首选项添加/删除repo.重新开始.我不知道该怎么办了.重新安装?

git diff xcode xcode6

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

当前位置注释的默认外观?

我有以下代码:

- (MKAnnotationView *) mapView:(MKMapView *) mapView viewForAnnotation:(id ) annotation {

    MKPinAnnotationView *customAnnotationView=[[[MKPinAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:nil] autorelease];

    customAnnotationView.pinColor = MKPinAnnotationColorRed;
    customAnnotationView.animatesDrop = NO;
    customAnnotationView.canShowCallout = YES;

    UIButton *rightButton = [UIButton buttonWithType:UIButtonTypeDetailDisclosure];
    [rightButton addTarget:self action:@selector(annotationViewClick:) forControlEvents:UIControlEventTouchUpInside];

    customAnnotationView.rightCalloutAccessoryView = rightButton;

    return customAnnotationView;
}
Run Code Online (Sandbox Code Playgroud)

此方法更改地图视图上的每个注释,包括当前位置的蓝色圆圈注释。我只想更改自定义注释,而仅保留当前位置注释。

我怎样才能做到这一点?

mapkit mkannotation mkannotationview ios

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

C++模板错误:没有匹配函数用于调用std :: vector <int,std :: allocator <int >>

我无法弄清楚为什么我得到以下代码的错误:

template <typename T>
class Test{
    void foo(vector<T>& v);
};

template <typename T>
void Test<T>::foo(vector<T>& v){
    //DO STUFF
}

int main(){
      Test<int> t;
      t.foo(vector<int>());
}
Run Code Online (Sandbox Code Playgroud)

这是错误:

main.cpp: In function ‘int main()’:
main.cpp:21:21: error: no matching function for call to ‘Test<int>::foo(std::vector<int, std::allocator<int> >)’
main.cpp:21:21: note: candidate is:
main.cpp:14:6: note: void Test<T>::foo(std::vector<T>&) [with T = int]
main.cpp:14:6: note:   no known conversion for argument 1 from ‘std::vector<int, std::allocator<int> >’ to ‘std::vector<int, std::allocator<int> >&’
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?

c++ templates vector

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

Clojure遵循Common Lisp标准吗?

我最近发现,如果它遵循Common Lisp标准,我可以在学校使用Lisp的任何方言进行函数式编程课程.Clojure是否遵循此标准?它太不一样了吗?

lisp standards clojure common-lisp dialect

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