小编Arn*_*old的帖子

respondsToSelector因外观代理而失败

我想检测的iOS 6特定外观的方法,通过运行respondsToSelector[UIBarButtonItem appearance].但是,NO无论我指定哪个选择器,它总是为我返回:

// Should show NOPE in iOS 5, YEP in iOS 6. Shows NOPE always
NSLog(@"%@", [[UIBarButtonItem appearance] respondsToSelector:@selector(setBackgroundImage:forState:style:barMetrics:)] ? @"YEP" : @"NOPE"); 

// Should show YEP in both iOS 5 and iOS 6. Shows NOPE always
NSLog(@"%@", [[UIBarButtonItem appearance] respondsToSelector:@selector(setBackgroundImage:forState:barMetrics:)] ? @"YEP" : @"NOPE"); 
Run Code Online (Sandbox Code Playgroud)

实际上使用这些方法在他们各自的iOS版本上工作正常,但我似乎无法检测到哪一个可供我使用.那我该怎么做呢?

xcode objective-c ios5 uiappearance ios6

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

包含在多个类中的iOS 6外观

我在appearanceWhenContainedIn我想要在iOS 6应用程序中自定义的某些UI元素上使用该方法.我发现的问题是,如果我尝试提供多个容器类,则不会应用任何自定义,如下所示:

// Works neither for toolbar nor navbar items
[UIBarButtonItem appearanceWhenContainedIn:[UINavigationBar class], [UIToolbar class], nil]

// Works fine (but only for navbar items, obviously)
[UIBarButtonItem appearanceWhenContainedIn:[UINavigationBar class], nil]
Run Code Online (Sandbox Code Playgroud)

官方文档说这个方法的参数可以是多个类的nil终止列表,但在我的情况下,它永远不会按照它应该的方式工作.我在这里错过了什么吗?

xcode objective-c uiappearance ios6

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

Firefox:盒子大小和最小高度

我无法理解:这真的是一个错误,还是我错过了一些东西?

我已经box-sizing: border-box在HTML文档中设置了所有div(当然包含所有-moz-webkit前缀).所以它意味着heightdiv总是包含它padding.期望该min-height物业采取类似行动是合理的.但显然,在Firefox中却没有.

我的意思是,当我有一个没有height设置(即height: auto)但没有min-height(例如,220px)和padding(比如说10px)的div时,它会导致div的整体高度为240px而不是Firefox中的220!不过,它在Chrome和Opera中都保持不变.

这不应该是固定的,还是某种我没有得到的功能?

html css firefox

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

骨干路由器:等待首先获取数据

我认为我不太了解正确使用Backbone路由器背后的想法.这是我得到的:

我有一些数据,我在页面加载时从服务器获取数据,然后将其打包到模型和集合中.这些模型和集合的数量是无限的.我想使用路由器能够从一开始就直接呈现某个集合的视图.

问题是:Backbone路由器提前启动,因为我要求它访问某个视图并触发其render动作,所以它不能这样做,因为那些视图尚未创建.这意味着我实际上必须在获取完成后启动我的路由.

我不知道这是否是一种正确的方法,但我想出的唯一想法是:

  1. 将路由定义和Backbone.history.start();位包装到单独的顶级可访问函数中(即稍后准备手动调用).
  2. 运行该函数作为success我的集合的回调fetch()
  3. 这些集合的数量是未知的,我也无法找到所有这些集合的提取时间,而且我不想多次启动这些路由.所以我利用_.defer()_.once().

这有效,但肯定看起来很奇怪:

路由器:

    window.startRoutes = _.once(function() {

        var AccountPage = Backbone.Router.extend({

          routes: {
            'set/:id': 'renderSet',
          },

          renderSet: function(setId) {

              /** … **/

              // Call the rendering method on the respective CardView
              CardsViews[setId].render();

          }

        });

        var AccountPageRouter = new AccountPage;

        Backbone.history.start();

    });
Run Code Online (Sandbox Code Playgroud)

采集:

window.CardsCollection = Backbone.Collection.extend({

    model: Card,

    initialize: function(params) {

        /** … **/

        // Get the initial data
        this.fetch({success: function() {
            _.defer(startRoutes);
        }}); …
Run Code Online (Sandbox Code Playgroud)

logic routes backbone.js

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

在Swift中为Parse的PFRelation声明一个只读的@NSManaged属性

我在我的iOS应用程序中使用Parse对象存储,我为我的Parse对象创建了一个自定义子类,看起来有点像这样:

class MyThing: PFObject, PFSubclassing {

   // ...PFSubclassing protocol...

   @NSManaged var name: String
   @NSManaged var somethingElse: String
   @NSManaged var relatedThings: PFRelation

 }
Run Code Online (Sandbox Code Playgroud)

relatedThings属性有效:我可以从商店中获取相关对象.但是,我不断从Parse得到这个警告:

[Warning]: PFRelation properties are always readonly,
but MyApp.MyThing.relatedThings was declared otherwise.
Run Code Online (Sandbox Code Playgroud)

在Objective-C中,我可以轻松地将该属性标记为只读,但我不确定如何在Swift中将其作为静音警告.

使用let而不是与var不允许结合使用@NSManaged.

添加private(set)也没有影响:

@NSManaged private(set) var relatedThings: PFRelation
Run Code Online (Sandbox Code Playgroud)

那么Parse如何期望我宣布关系属性呢?

core-data ios parse-platform pfrelation swift

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

RoR字符类正则表达式

我在Ruby on Rails应用程序中有以下代码行,它检查给定字符串是否包含韩语字符:

isKorean = !/\p{Hangul}/.match(word).nil?
Run Code Online (Sandbox Code Playgroud)

它在控制台中运行良好,但会为实际应用程序引发语法错误:

invalid character property name {Hangul}: /\p{Hangul}/
Run Code Online (Sandbox Code Playgroud)

我错过了什么,我怎样才能让它发挥作用?

ruby regex ruby-on-rails cjk

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

JavaScript字符串比较随机失败

我随机地在我的JS应用程序中发生了一个非常奇怪的错误.基本上,脚本无法准确比较两个字符串.更具体地说,有时看不到两个相同的字符串相同:('blah' == 'blah')return false.

有趣的是,在另一次尝试中,相同的两个字符串可以被认为是相同的(语句返回true).我从未设法弄清楚这种模式.我也试过用===而不是==; 这没有用.

除了录制截屏视频之外,我想不出更好的方式来演示和证明这个荒谬的错误.所以这是:http://www.screenr.com/klOs.我继续为该视频中的每个测验给出正确的答案,但是接近结束时,我对"日本"和"台湾"的答案将被视为"错误"; 控制台还将显示给定的答案字符串,正确的答案字符串以及比较结果(false?!!).

那么这可能是造成这种奇怪行为的原因,我该如何解决这个问题呢?

您可以在截屏视频中看到带有比较语句的代码.'params.givenAnswer'直接来自按钮文字标签:

//*** Options for answering the card quiz
quizOptions = new Ext.Panel({
        id: 'quizOptions',
        […………]
        listeners: {
            el: {
                scope: this,
                tap: this.checkAnswer
            }
        }
});


checkAnswer: function(container, element) {

    // Get the text value of the button clicked
    var answer = Ext.fly(element).dom.innerText;

    Ext.dispatch({
        controller: 'Practice',
        action: 'checkAnswer',
        givenAnswer: answer
    }); 
},
Run Code Online (Sandbox Code Playgroud)

更新感谢@JAAulde和@Mike!我试图在日志记录中包含引号和var类型,我得到了这个结果:

在此输入图像描述

现在很明显为什么字符串比较失败了:第一个字符串中似乎有一个额外的换行符.它仍然非常奇怪,因为它在之前的日志记录中并没有显示为空白的新行,最重要的是,它随机出现在那里(注意这次"台湾"如何被接受而没有任何问题).

我为答案字符串添加了一个简单的换行符删除规则,现在一切似乎都运行正常.非常感谢大家!

javascript string string-comparison sencha-touch

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

getHours()返回不正确的值

我使用JavaScript Date对象将毫秒转换为可读minutes:seconds格式的字符串.我需要为自定义视频播放器创建一个计时器,我的JS接口接收视频持续时间信息作为毫秒值.

在我决定支持视频超过59分钟的可能性之前,这是一项相当简单的任务.然后我遇到了这个问题:当我向新的Date对象的构造函数提交毫秒值,然后调用时getHours(),即使毫秒数代表不到一小时的时间段,它也会返回一些东西.看到这个行动的最简单方法是喂它,比方说0.

在此输入图像描述

我希望它返回0,但它总是返回12(Opera中的13,这使得它更奇怪).这是正常行为还是错误?无论哪种方式,我如何可靠地检测我的毫秒值是否仅限于几分钟或几秒还是包括几小时?

谢谢.

UPD:

我在OSX上的Chrome 15和Firefox 7中进行了测试:结果与上面的截图相同.我无法弄清楚如何使用Opera Dragonfly控制台,但从我所看到的同样的事情发生在Opera中,只需要13的值getHours().

javascript formatting date

7
推荐指数
2
解决办法
8456
查看次数

Sencha Touch存储同步

我是Sencha Touch的新手,对数据处理模式仍然不太自信.我想要设置我的应用程序的方式是这样的:

  1. 通过AJAX从远程服务器检索用户的数据.

  2. 将其保存在本地存储中.任何修改(编辑,添加,删除项目)都会更新本地数据.

  3. 在某个时间点(当用户点击"同步"时,当用户退出时,或类似的东西),本地存储的存储数据再次通过请求AJAX与服务器同步.

那么,为了实现这种模式,我的应用程序的基本结构是什么?而且,虽然我们在这里,有没有办法在Sencha Touch中为指定的商店使用本地数据库(而不是本地键值存储)?

model-view-controller local-storage sencha-touch

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

在后台线程中自变异Swift结构

假设我们有一个能够自我突变的结构,它必须作为后台操作的一部分发生:

struct Thing {
    var something = 0
    mutating func operation(block: () -> Void) {            

        // Start some background operation
        dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_BACKGROUND, 0)) {

            // Mutate self upon background task completion
            self.something += 1
            block()

        }

    }
}
Run Code Online (Sandbox Code Playgroud)

现在,当我在上下文中使用这样的结构时:

var myThing = Thing()
myThing.operation {
    println(myThing.something)
}
Run Code Online (Sandbox Code Playgroud)

println给我0,就好像myThing从来没有发生突变.self.something从内部印刷dispatch_async明显产量1.

我如何解决这个问题,最好不必selfoperation竞争块中传递更新的结构并覆盖主要上下文中的原始变量?

// Ew
var myThing = Thing()
myThing.operation {
    (mutatedThing) in
    myThing = mutatedThing
    println(myThing.something)
}
Run Code Online (Sandbox Code Playgroud)

multithreading struct mutators swift

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