小编Eva*_*ell的帖子

具有ReactiveCocoa的iOS应用程序的ViewModel模式

我正在努力将RAC集成到我的项目中,目标是创建一个ViewModel层,允许从网络轻松缓存/预取(以及MVVM的所有其他好处).我对MVVM或FRP还不是特别熟悉,我正在尝试为iOS开发开发一个漂亮的,可重用的模式.我有几个问题.

首先,这就是我将ViewModel添加到我的一个视图中的方式,只是为了尝试一下.(我希望这里稍后参考).

在ViewController viewDidLoad中:

@weakify(self)

//Setup signals
RAC(self.navigationItem.title) = self.viewModel.nameSignal;
RAC(self.specialtyLabel.text) = self.viewModel.specialtySignal;
RAC(self.bioButton.hidden) = self.viewModel.hiddenBioSignal;
RAC(self.bioTextView.text) = self.viewModel.bioSignal;

RAC(self.profileImageView.hidden) = self.viewModel.hiddenProfileImageSignal;    

[self.profileImageView rac_liftSelector:@selector(setImageWithContentsOfURL:placeholderImage:) withObjectsFromArray:@[self.viewModel.profileImageSignal, [RACTupleNil tupleNil]]];

[self.viewModel.hasOfficesSignal subscribeNext:^(NSArray *offices) {
    self.callActionSheet = [[UIActionSheet alloc] initWithTitle:@"Choose Office" delegate:self cancelButtonTitle:nil destructiveButtonTitle:nil otherButtonTitles:nil];
    self.directionsActionSheet = [[UIActionSheet alloc] initWithTitle:@"Choose Office" delegate:self cancelButtonTitle:nil destructiveButtonTitle:nil otherButtonTitles:nil];
    self.callActionSheet.delegate = self;
    self.directionsActionSheet.delegate = self;
}];

[self.viewModel.officesSignal subscribeNext:^(NSArray *offices){
    @strongify(self)
    for (LMOffice *office in offices) {
        [self.callActionSheet addButtonWithTitle: office.name ? office.name : office.address1];
        [self.directionsActionSheet addButtonWithTitle: office.name ? office.name …
Run Code Online (Sandbox Code Playgroud)

mvvm ios reactive-cocoa

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

UICollectionView contentOffset随自定义布局而变化

我有一个带有自定义UICollectionViewLayout的UICollectionView(实际上,我正在使用这个漂亮的布局).

contentOffset = CGPointZero在viewDidLoad中设置.然而,在viewDidLoad之后,偏移量为-20,并且内容被按下,如下所示:


图片

(它应该与线齐平).我正在界面构建器中加载集合视图布局.似乎我的问题与这个问题非常相似,但那里的解决方案对我不起作用.

我尝试collectionViewContentSize在我的布局实现中进行修改,以确保它总是大于collectionView的大小.虽然这意味着我可以向下滚动我的内容(它比collectionView的高度短)并隐藏额外的空间,我也可以向上滚动查看它.

似乎什么都没有用!

ios contentoffset uicollectionview uicollectionviewlayout

23
推荐指数
3
解决办法
4万
查看次数

RVM不会切换Rubies

我在CentOS上运行Ruby 1.9.1p243,我决定安装rvm来处理升级到1.9.2或降级到1.8.7(取决于哪个更适合rails3).

我按照这里的说明操作:http://rvm.beginrescueend.com/rvm/install/并正确安装了所有内容.我能够编译和安装Ruby 1.8.7,1.9.1和1.9.2.

但是,如果我尝试实际切换到其中一个rvm安装的Rubies,例如rvm使用1.8.7,则无效.我的系统仍然使用我在/ usr/local/bin/ruby​​中安装的Ruby.

我获得的输出示例:

$ rvm use 1.8.7
$ ruby -v
ruby 1.9.1p243 (2009-07-16 revision 24175) [i686-linux]
$ which ruby
/usr/local/bin/ruby
$ rvm use 1.9.2
$ ruby -v
ruby 1.9.1p243 (2009-07-16 revision 24175) [i686-linux]
$ which ruby
/usr/local/bin/ruby
Run Code Online (Sandbox Code Playgroud)

我不知道为什么会这样,我似乎无法在网上找到关于这个问题的任何内容.任何帮助,将不胜感激.

ruby rvm

20
推荐指数
3
解决办法
1万
查看次数

从segue返回时,UITableViewCells不会取消选择

我有一个UITableView,其中包含一个Storyboard中的单元格,以及一个将单元格连接到另一个视图的segue.

当您选择一个单元格时,它会显示单元格选择动画(在我的情况下将单元格变为灰色)并将另一个视图推送到屏幕上.但是当您返回到tableview时,取消选择动画根本不会显示(与选择动画相反).由于我只是使用了一个segue,我希望默认情况下可以使用它.

有没有办法强制它显示取消选择动画?

uitableview ios segue

20
推荐指数
4
解决办法
8966
查看次数

为什么Core Data难以预先填充?

这是一个关于Apple设计决策的哲学问题,而不是关于核心数据的问题.

Why in the world is it useful to have a model system that is so difficult to prepopulate? What are the advantages? I know you can have your program generate the sqlite file and edit it manually, but as far as I can tell, you can't do that if you have any relationships at all.

I compare this to the MVC paradigm used in rails, which seems to make way more sense. Models in rails provide a similar level …

iphone core-data relational-database

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

在Storyboard中的SplitView,无法连接委托

我在故事板中定义了一个带有SplitViewController的iPad界面.我想将SplitViewController的委托设置为指向详细控制器,但IB不允许进行该连接.

  • 放置"对象"对象并将类更改为我的详细控制器的类使得委托指向详细控制器的不同实例而不是显示的实例.
  • 我在app委托中手动连接(在didFinishLaunching中)的尝试没有结果,代表仍然是零.
  • 将委托更改为AppDelegate并实现协议有效,但将消息传递给详细控制器不起作用(即使我验证我引用了同一个实例).

什么都行不通.我可以设置self.splitViewController.delegate = self详细视图加载时,然后它成为没有问题的委托.但我错过了在此之前发生的任何代表电话.

对于上下文,我需要获取splitviewcontroller的委托调用,以便我可以在detailview中显示一个按钮来显示弹出窗口,这是标准做法.现在,如果应用程序以纵向方式启动,则必须将其旋转为横向,然后返回以显示按钮.

我用"普通"xib做了这个,没有问题.这似乎是一个特殊情况,即不允许在故事板中跨场景连接插座这一更普遍的问题.

delegates uisplitviewcontroller uistoryboard

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

CocoaPods生成无效的项目文件(找不到标题)

我有一个带有Podfile的项目文件,如下所示:

platform :ios, '7.0' 

def import_pods
pod 'Specta', '0.1.8' 
pod 'Expecta', '0.2.1' 
pod 'RestKit', '0.20.3' 
pod 'MagicalRecord', '2.1' 
pod 'RestKit/Testing', '0.20.3' 
end 

link_with 'LocalMedTests' 
import_pods
Run Code Online (Sandbox Code Playgroud)

当我运行pod install时,它会为我的项目生成Podfile.lock,Pods目录和工作空间.当我打开工作区来构建它时,我得到这样的错误:找不到'RestKit.h'文件.

它似乎只是RestKit的一个问题,但我无法通过这些错误来查看是否还有更多错误.restkit标头位于Pods/Headers中.它们正确地包含在Pods.xcconfig中.这是一个很好的衡量标准:

FRAMEWORK_SEARCH_PATHS = $(inherited) "$(SDKROOT)/Developer/Library/Frameworks" "$(DEVELOPER_LIBRARY_DIR)/Frameworks" 

GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 

HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers" "${PODS_ROOT}/Headers/AFNetworking" "${PODS_ROOT}/Headers/Expecta" "${PODS_ROOT}/Headers/MagicalRecord" "${PODS_ROOT}/Headers/RestKit" "${PODS_ROOT}/Headers/RestKit/RestKit" "${PODS_ROOT}/Headers/RestKit/RestKit/CoreData" "${PODS_ROOT}/Headers/RestKit/RestKit/Network" "${PODS_ROOT}/Headers/RestKit/RestKit/ObjectMapping" "${PODS_ROOT}/Headers/RestKit/RestKit/Support" "${PODS_ROOT}/Headers/RestKit/RestKit/Testing" "${PODS_ROOT}/Headers/SOCKit" "${PODS_ROOT}/Headers/Specta" "${PODS_ROOT}/Headers/TransitionKit" 

OTHER_LDFLAGS = -ObjC -framework CFNetwork -framework CoreData -framework Foundation -framework MobileCoreServices -framework Security -framework SenTestingKit -framework SystemConfiguration 

PODS_ROOT = ${SRCROOT}/Pods
Run Code Online (Sandbox Code Playgroud)

我试过清理和清理构建文件夹.没关系 - 我总是得到标题未找到错误.

我还应该补充说,Pods.xcconfig指定的所有头文件目录都应该包含在目标中.

有关于此的任何想法?我一直在这个项目中使用CocoaPods几个月没有问题,最近有什么变化吗?

objective-c ios restkit cocoapods

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

不同上下文中对象之间的非法关系:但我只有一个上下文?

我收到以下错误:

'NSInvalidArgumentException',原因:'非法尝试在不同上下文中的对象之间建立关系'条件'

在运行我的iPhone应用程序时.我模型的相关部分如下所示:

AssessmentTree
-has one TreeCrown

TreeCrown
-has one TreeCrownCondition
-has one AssessmentTree

TreeCrownCondition
-has many TreeCrowns
Run Code Online (Sandbox Code Playgroud)

为了上下文,我将提到该模型的这一部分旨在让树艺师记录树冠的状况.它存储了一个用于评估树冠的选项列表,也可以由用户编辑(So TreeCrownConditions包含选项,TreeCrown.condition指向评估中的特定选择).

我有一个UIPickerView加载这些选项,并使用didSelectRow中的以下代码将所选选项与AssessmentTree相关联:inComponent:

TreeCrownCondition *fc = (TreeCrownCondition *)[conditionArray objectAtIndex:[conditionPicker selectedRowInComponent:0]];
tree.crown.condition = fc;
Run Code Online (Sandbox Code Playgroud)

当我运行它时,前几次我选择一个选项一切都很好,但有时(通常在添加/编辑/删除TreeCrownCondition选项后)应用程序将崩溃在上面的行与我在开头发布的错误.

这个错误似乎很容易解决,除了我只在整个应用程序中使用一个NSManagedObjectContext.每个新控制器在加载以下代码时都会抓取它:

if(!managedObjectContext){
    managedObjectContext = [(AppDelegate *)[[UIApplication sharedApplication] delegate] managedObjectContext];
}
Run Code Online (Sandbox Code Playgroud)

我找不到关于此错误或如何解决此错误的非常多信息,我当然没有找到任何人在没有使用多个上下文的情况下遇到此问题.

我只能假设我确实有多个上下文,但我看不出这是怎么回事.我错过了什么?

编辑 Heres堆栈跟踪:

*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'Illegal attempt to establish a relationship 'condition' between objects in different contexts (source = <TreeCrown: 0x64b9f00> (entity: TreeCrown; id: 0x648db30 <x-coredata://6E17F271-7670-44EA-9901-5AB58DCA8AC7/TreeCrown/p3> …
Run Code Online (Sandbox Code Playgroud)

iphone core-data nsmanagedobjectcontext

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

核心数据:商店无法容纳实体实例(Cocoa错误:134020)

这是最奇怪的错误.互联网表明这是针对Tiger的问题; 除了我实际上是针对iOS 3和4.

Error Domain=NSCocoaErrorDomain Code=134020 "The operation couldn\u2019t be completed. (Cocoa error 134020.)" UserInfo=0xc502350 {NSAffectedObjectsErrorKey=<PartRecommendation: 0x6a113e0> (entity: PartRecommendation; id: 0x6a0d0e0 <x-coredata:///PartRecommendation/tAE2B5BA2-44FD-4B62-95D7-5B86EBD6830014> ; data: {
    "_rkManagedObjectSyncStatus" = 0;
    name = "Thin canopy cover";
    part = nil;
    partRecommendationId = 6;
    partType = "0x6a07f40 <x-coredata:///PartType/tAE2B5BA2-44FD-4B62-95D7-5B86EBD683003>";
}), NSUnderlyingException=Store <NSSQLCore: 0x5f3b4c0> cannot hold instances of entity (<NSEntityDescription: 0x6d2e5d0>) name PartRecommendation, managedObjectClassName PartRecommendation, renamingIdentifier PartRecommendation, isAbstract 0, superentity name PartOption, properties {
    "_rkManagedObjectSyncStatus" = "(<NSAttributeDescription: 0x6d37550>), name _rkManagedObjectSyncStatus, isOptional 0, isTransient 0, entity …
Run Code Online (Sandbox Code Playgroud)

core-data objective-c persistent-storage ios restkit

7
推荐指数
3
解决办法
3403
查看次数

运行rake db:create时出现Arel Deprecation警告

我正在尝试使用mysql2 v 0.2.6在Rails 3.1中创建一个应用程序.运行时rake db:create,我收到以下错误:

DEPRECATION WARNING: Arel::Visitors::VISITORS is deprecated and will be removed. 
Database adatpers should define a visitor_for method which returns the appropriate 
visitor for the database. For example, MysqlAdapter.visitor_for(pool) returns 
Arel::Visitors::MySQL.new(pool). (called from mon_synchronize at 
c:/Ruby192/lib/ruby/1.9.1/monitor.rb:201)
Run Code Online (Sandbox Code Playgroud)

我可以访问MySQL监视器,因此gem似乎正确安装.还有什么可以发生在这里?

谢谢!

activerecord windows-7 mysql2 active-relation ruby-on-rails-3.1

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

自定义UIView和UIViewController的最佳实践?

我目前有一个简单的iPhone应用程序,可以加载UIView的自定义子类.目前整个应用程序只有一个控制器,尽管有几个UIViews用于逻辑分离程序.

我目前的结构看起来像这样:

mainView : UIScrollView
    \__ has one subView : myCustomUIView : UIView
            \__ has many subSubView : myOtherCustomUIView : UIView
Run Code Online (Sandbox Code Playgroud)

我希望这很清楚; 当然,冒号代表了遗产.

我的问题是:我需要拦截最低级别的事件subSubView.如果需要,我可以在应用程序控制器中执行此操作,但是我应该使用subSubViewController吗?我也应该有一个subViewController吗?

如果是这样,有人可以指点我做一些参考手动吗?我当然可以创建类,但将它们连接到自定义视图似乎并不重要.除了保存窗口对象的主笔尖之外,我根本不使用接口构建器.

我的主要困惑来自于当我将视图嵌套在具有不同控制器的视图中时会发生什么.所以我想说我确实有一个subSubViewController,但是mainView仍然有它的mainViewController.由于subSubView包含在mainView中,这不会引起一些问题吗?

我是否应该使用代表呢?

任何推动正确的方向将不胜感激.

iphone cocoa-touch uiviewcontroller uiview

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

Rails 3中的路由:带选项的映射?

我似乎无法找到有关rails 3中的选项的映射路由的文档.

作为一个具体的例子,我需要翻译

map.with_options :controller => 'users' do |signup|
    signup.signup '/signup',
      :action => 'landing',
      :conditions => { :method => :get }
    signup.premium '/signup/premium',
      :action => 'new',
      :level => 'premium',
      :conditions => { :method => :get }    
    signup.premium '/signup/premium',
      :action => 'create',
      :level => 'premium',
      :conditions => { :method => :post }
    signup.free '/signup/free',
      :action => 'new',
      :level => 'free',
      :conditions => { :method => :get }    
    signup.free '/signup/free',
      :action => 'create',
      :level => 'free',
      :conditions => { :method => :post …
Run Code Online (Sandbox Code Playgroud)

routes ruby-on-rails-3

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

根据高度获取文本

我们都知道我们可以根据文本计算标签或任何控件的高度.像这样:

    NSString *text=@"fwfgwefgwefhwefhwoefhwoeifhoiwefhwoeifhwieofhweohfiweofowefhowefhoweifhweofhweofhweoihfweiofhiowefhweiofhwioefhweiofhiweofhweiofhweiofhweiofhweiofweoifiweofhweoifhiowefhoiwefhowewoefoiwehfoiwe";     
    labelsize=[text sizeWithFont:[UIFont systemFontOfSize:14] constrainedToSize:CGSizeMake(100, 2000.0)];
    NSLog(@"labelsize.height%f",labelsize.height);
Run Code Online (Sandbox Code Playgroud)

现在假设我得到身高= 270.现在我只想要那个高度为200的文本.就像我的标签高度是200,我希望直到200高度文本进入标签,文本的其余部分应显示在另一个标签.所以我想问一下是否可以根据身高获得文字.

提前致谢!

iphone objective-c nsstring

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