小编Tob*_*ias的帖子

Objective-C:断言与异常与错误

在Cocoa中,何时应该使用NSAssert,NSException,NSError?

这就是我一直在想的:

NSAssert - 在创建任何用于程序员自身利益的客户端程序时,可以仔细检查规则,约定,假设或前置条件和后置条件?

NSException - 为了使用该库的其他程序员的利益创建第三方库,以便他们立即知道输入何时无效?

NSError - 当与外部系统连接以获取不保证给我结果的文件,数据库或Web服务等数据时?

cocoa conventions objective-c

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

TestFlight拒绝构建"get-task-allow"错误

所以我使用testflightapp来分发ad-hoc构建.

但我不断收到此消息:'无效的配置文件:分发构建权利必须将get-task-allow设置为false.

我的应用程序没有权利文件,因此XCode会自动生成一个并将其包含在构建中.我解压缩App.ipa并打开embedded.mobileprovision文件并查看权利字典.

它看起来像这样:

<key>Entitlements</key>
<dict>
    <key>application-identifier</key>
    <string>E9PBH9V8TB.*</string>
    <key>get-task-allow</key>
    <false/>
    <key>keychain-access-groups</key>
    <array>
        <string>E9PBH9V8TB.*</string>
    </array>
</dict>
Run Code Online (Sandbox Code Playgroud)

之前有其他人经历过吗?我不明白为什么我会收到这个错误.

testflight

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

我应该如何使用Swift Enums实现默认关联值?

Swift问题是有一种方法可以使用一个具有相关值的案例的枚举类型.

我有一个API,它提供了可用的过滤器,它不太可能,但API可能会添加其他过滤器类型.因此,如果API发送未知的过滤器类型,我希望保留与枚举相关联的信息.

以下是我对此做出的不同想法.

我的前两次尝试没有编译.我的第三次尝试感觉有点笨重.

有没有人有更好的方法这样做?你认为我不应该使用enum来解决这个问题吗?

typealias APIFilterIdentifier = String

/* Does Not Compile */
enum EnumTestAssociatedValeu: APIFilterIdentifier {
    case Unknown(APIFilterIdentifier)
    case Everyone = "everyone"
    case Team = "myteam"
}

/* Does not compile */
enum EnumTestDefaultAssociatedValues: APIFilterIdentifier {
    case Unknown(APIFilterIdentifier)
    case Everyone(APIFilterIdentifier = "everyone")
    case Team(APIFilterIdentifier = "myteam")
}

/* Compiles but is there a better way? */
enum EnumTestWithCustomInit {

    case Unknown(APIFilterIdentifier)
    case Everyone
    case Team

    init(filterIdentifier: APIFilterIdentifier) {
        let everyone: APIFilterIdentifier = EnumTestWithCustomInit.everyoneFilterIdentifier
        let team: APIFilterIdentifier = EnumTestWithCustomInit.teamFilterIdentifier …
Run Code Online (Sandbox Code Playgroud)

enums swift

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

为什么Cocoa游戏会避免Grand Central Dispatch创建计时器?

我在互联网上看起来很讨论在Cocoa中创建游戏循环.我见过的大多数游戏循环使用NSTimer每隔60秒触发一次事件.为什么似乎没有使用Grand Central Dispatch的示例,例如下面Apple开发人员文档的源代码.有一个我不知道的问题吗?

dispatch_source_t CreateDispatchTimer(uint64_t interval,
              uint64_t leeway,
              dispatch_queue_t queue,
              dispatch_block_t block)
{
   dispatch_source_t timer = dispatch_source_create(DISPATCH_SOURCE_TYPE_TIMER,
                                                     0, 0, queue);
   if (timer)
   {
      dispatch_source_set_timer(timer, dispatch_walltime(NULL, 0), interval, leeway);
      dispatch_source_set_event_handler(timer, block);
      dispatch_resume(timer);
   }
   return timer;
}
Run Code Online (Sandbox Code Playgroud)

objective-c grand-central-dispatch

10
推荐指数
2
解决办法
2660
查看次数

Drupal 7是否比Drupal 6更好地管理开发变更?

因此Drupal 6的一个麻烦就是将更改从开发服务器移动到测试或登台服务器到生产服务器是很困难的.

这在Drupal 7中变得更容易了吗?模块开发人员现在应该遵循一些编码约定吗?那么开发人员可以轻松地分离内容和配置,只在dev,test和prod之间移动配置?

推荐的建议仍然使用功能模块?

drupal drupal-6 drupal-7

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

无论如何,Swift断言以字符串形式打印变量

背景: 在Objective-C中,我将创建包含调试信息的断言:

NSAssert(poetCount > 5, "Expected poetCount > 5; Actual: %d", poetCount);
Run Code Online (Sandbox Code Playgroud)

但是,assertSwift中的全局函数似乎不允许这样,因为message参数是一个StaticString.所以我不能这样做:

assert(NSFileManager.defaultManager().fileExistsAtPath(fullpath), 
"Expected: File to Exist @ \(fullpath)")
Run Code Online (Sandbox Code Playgroud)

问题:是否存在assert不需要静态字符串的替代函数,或者NSAssert如果我想提供额外信息以使调试更容易,我应该继续使用吗?

assert swift

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

是否可以在Objective-C中创建自定义指令?

Objective-C有如下指令:

  • @接口
  • @implementation
  • @结束
  • @协议
  • @属性
  • @合成

我想到了像复杂的marco或代码生成器这样的东西.是否可以为代码生成目的创建自定义指令?一种可能的用途是为CoreData生成方法.

我没想到,因为我从来没有见过任何关于它的东西,但我的世界不是世界.


后续问题:

Jonathan在下面提到可以编写自己的预处理器,这就引出了问题.目前,#define SYMBOLIC_CONSTANT 102将在文件移动到编译器之前将字符SYMBOLIC_CONSTANT的所有实例替换为文件中的字符102.

我知道XCode你可以在Targets构建过程中添加"Run Script Phase".因此,我可以编写一个脚本来查找我的自定义预处理指令,如'$ coredata',然后让脚本生成一个新文件,其中字符$ coredata替换为某些代码字符.但根据我对XCode构建过程的理解,您无法将更改的文件提供给Compiler Sources阶段.这些文件由IDE指定并锁定.

有没有人做过类似的事情?我知道外部构建系统是可能的,但说实话,我不是那么理解.我不知道Build and Run按钮的技术细节.

与此同时,我将开始阅读Apple的XCode文档......

谢谢你的回复!

xcode objective-c

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

SQL Server找不到证书

背景资料:

我在example.com上有一个Window VPS.我有它运行IIS和SQL Server.我有一个适用于IIS的example.com证书.我想使用相同的SQL Server证书来允许与客户端的加密连接.SQL Server配置管理器不会在下拉列表中显示证书.

我认为问题是SQL Server认为证书无效,因为SQL Server认为服务器名称与证书(example.com)不匹配.

如何检查SQL Server认为服务器名称是什么?如果错了,我该怎么改呢?

sql-server ssl

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

为什么文本字段中的闪烁光标会导致调用drawRect?

我的程序中有以下视图层次结构设置.

Window
+ContentView (Subview of Window)
++MyCustomView (Subview of ContentView)
++MyCustomOpaqueView (Subview of ContentView)
+++TextField (Subview of MyCustomOpaqueView)
Run Code Online (Sandbox Code Playgroud)

当用户单击TextField时,其中的光标开始闪烁.在每次闪烁时,在MyCustomView上调用drawRect.没什么大不了的,但我想知道为什么?

在MyCustomOpaqueView中,我实现了isOpaque,

- (BOOL)isOpaque {return YES;}
Run Code Online (Sandbox Code Playgroud)

如果传递给drawRect的NSRect被一个不透明的视图完全遮挡,我认为这会阻止消息传递给MyCustomView中的drawRect,但是当光标闪烁时,MyCustomView仍然会发送一个完全在不透明视图后面的NSRect的drawRect消息.

我错过了一个关键概念还是闪烁光标的怪癖?


macos cocoa objective-c appkit

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

验证失败时Alamofire Parse响应数据

因此,我正在使用的API有时会在请求失败时在响应正文中发送错误消息.它位于response.data.有时它是JSON,有时它是一个字符串.我使用的validate方法,以便result.valuenil发生错误时.

有没有办法让Alamofire将数据从NSData序列化为字符串,或者让JSON [ String : AnyObject ]像响应成功一样?

我想继续使用validate方法.

编辑:这是我在Alamofire GitHub项目上开始的功能请求的链接.

https://github.com/Alamofire/Alamofire/issues/1459

alamofire

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