小编ff1*_*f10的帖子

设置NSUnderlineStyle会导致无法识别的选择器异常

我试图用NSAttributed字符串为字符串加下划线.出于某种原因,我的行导致异常:

-[_SwiftValue _getValue:forType:]: unrecognized selector sent to instance   
Run Code Online (Sandbox Code Playgroud)

结果应该用于UITableView中的UILabel,并根据需要创建.

这是代码:

attributedString = NSMutableAttributedString(string: message)

if let actor = event.actor {
   let attributes = [NSUnderlineStyleAttributeName:NSUnderlineStyle.styleSingle]
   var attributedActorString = NSMutableAttributedString(string: actor.shirtName, attributes: attributes)
   attributedActorString.insert(NSAttributedString(string: " "), at: 0)
   attributedActorString.append(NSAttributedString(string: ". "))                               attributedActorString.append(attributedImageStringForUrl(event.actor!.portraitImageUrl, indexPath: indexPath))
   attributedString.append(attributedActorString)
}
Run Code Online (Sandbox Code Playgroud)

nsattributedstring swift swift3

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

由于Google Analytics的未定义符号,存档失败

我使用最新的cocoapods版本集成了GAI.

当我构建Debug配置时,一切运行都很好.但是,只要我尝试归档应用程序,编译器就会失败,并显示以下消息:

Undefined symbols for architecture armv7:
  "_OBJC_CLASS_$_GAIDictionaryBuilder", referenced from:
      objc-class-ref in libWLCore.a(WLTrackingHelper.o)
  "_OBJC_CLASS_$_GAI", referenced from:
      objc-class-ref in libWLCore.a(WLTrackingHelper.o)
  "_kGAIScreenName", referenced from:
      +[WLTrackingHelper trackView:] in libWLCore.a(WLTrackingHelper.o)
      +[WLTrackingHelper resetView] in libWLCore.a(WLTrackingHelper.o)
  "_kGAIAnonymizeIp", referenced from:
      +[WLTrackingHelper prepareDefaultTracker:withAnonymization:withUnCaughtExceptions:withDebug:] in libWLCore.a(WLTrackingHelper.o)
ld: symbol(s) not found for architecture armv7
clang: error: linker command failed with exit code 1 (use -v to see invocation)
Run Code Online (Sandbox Code Playgroud)

由于它在Debug中工作,我试图弄清楚Debug和Release之间的配置差异在哪里.我发现Release中的Other链接器标志是空的,而Debug中包含GoogleAnalytics和其他框架和库的标志.

将标志添加到我获得的其他链接器标志的释放配置之后

library not found for -lGoogleAnalyticsServices
Run Code Online (Sandbox Code Playgroud)

之后,我添加了libPods,然后将libPods-GoogleAnalytics添加到Link Binary With Libraries部分,但错误保持不变.

我在这个问题上投入了差不多2天,但我找不到任何解决方案.

linker google-analytics ios cocoapods xcode5

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

在NSInteger返回类型方法上返回nil

我有以下UITableView DataSource方法:

- (NSInteger)tableView:(UITableView *)tableView sectionForSectionIndexTitle:(NSString *)title atIndex:(NSInteger)index 
Run Code Online (Sandbox Code Playgroud)

在某些项目(即部分索引标题)上,我只想返回"无",以便表视图不会跳转到任何部分.我试图返回nil,但是我得到了"返回使得没有强制转换的指针整数" - 警告,因为NSInteger显然不是一个对象,只是一个32/64位整数的typedef.

如何才能对特定部分索引标题没有回报/反应?

iphone null xcode objective-c uitableview

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

CoreMotion显然从后台线程调用UI API

在我的应用程序的某些时候,我正在初始化CMMotionManager.这发生在主线程上.完成后,Xcode 10主线程检查器指示

-[UIApplication applicationState] 
Run Code Online (Sandbox Code Playgroud)

没有从主线程调用.确实它来自

Thread name: com.apple.CoreMotion.MotionThread
Run Code Online (Sandbox Code Playgroud)

由于这是Apple的私人框架,在我看来,我只需要等到Apple的问题得到解决.我是否正确和/或有没有办法解决这个问题,而无需关闭主线程检查器?

xcode uikit core-motion xcode10

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

Xcode控制台中的"Some"关键字是什么意思?

打印对象的描述会使lldb在对象的描述前面使用关键字"Some"(这里我是一个可选的字符串):

(lldb) po someString
Optional<String>
 - Some: "Hello Jupiter"
Run Code Online (Sandbox Code Playgroud)

这个关键字是什么意思; 为什么会这样?

xcode lldb swift

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

如何快速检查Integer是否在给定范围内

我有一个整数x,我想检查它是否位于给定范围内的给定边界之间.

直截了当的方法是

let contains = x > lowerBounds && x < higherBounds
Run Code Online (Sandbox Code Playgroud)

对此有一种更加敏捷的方法吗?

swift

8
推荐指数
2
解决办法
8460
查看次数

设置后将黑色屏幕翻译为"无限制"的"任务大小"

我有一个带有标签的Scrollview.为了将标签置于顶部中心,我对它应用了两个约束:

[self addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|-30-[questionLabel]"
                                                             options:0
                                                             metrics:0
                                                               views:viewsDictionary]];
[self addConstraint:[NSLayoutConstraint constraintWithItem:self.questionLabel
                                                 attribute:NSLayoutAttributeCenterX
                                                 relatedBy:NSLayoutRelationEqual
                                                    toItem:self
                                                 attribute:NSLayoutAttributeCenterX
                                                multiplier:1.0
                                                  constant:.0]];
Run Code Online (Sandbox Code Playgroud)

如果没有将questionLabel的translatesAutoresizingMaskIntoConstraints设置为NO,我将遇到Core Layout抛出的异常.它警告我,它不能满足以下约束:

(
"<NSLayoutConstraint:0x8e3baf0 V:|-(30)-[UILabel:0xa184ca0]   (Names: '|':WLQuestionnaireSingleQuestionView:0xa184050 )>",
"<NSAutoresizingMaskLayoutConstraint:0x8e3efa0 h=--& v=--& UILabel:0xa184ca0.midY == + 15>"
Run Code Online (Sandbox Code Playgroud)

)

在那里,我看到Core Layout试图满足一个约束,该约束已经自动生成为与自动调整掩码向后兼容.在我的理解中,对此的修复应该是将translatesAutoresizingMaskIntoConstraints设置为NO,但不幸的是,这导致完全黑屏,没有调试消息.

我以编程方式实现了视图,没有笔尖.

cocoa-touch ios nslayoutconstraint

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

高阶函数:"无法使用类型'((_) - > _)"的参数列表调用'map'

我想使用swift高阶函数(map)从给定的UIView.subviews数组中删除所有Subviews.这条线

(cell.contentView.subviews as [UIView]).map { $0.removeFromSuperView() }
Run Code Online (Sandbox Code Playgroud)

导致错误"无法使用类型'((_) - > _)"的参数列表调用'map'

我想知道编译器在这一点上需要什么.

higher-order-functions swift

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

更改Eureka TextRow的文本对齐方式

我正在寻找一种方法来改变textField文本对齐方式.我试过了

cell.textField.textAlignment = .Left
Run Code Online (Sandbox Code Playgroud)

但这不会改变对齐方式.它将始终保持正确对齐.我想知道为什么这是默认值,因为Apple自己在大多数地方使用左对齐文本输入,如果不是所有地方的话.

ios swift eureka-forms

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

使用自定义运行脚本和xcodebuild"找不到命令"

我正在运行一个自定义脚本,其中包含一个bash应该知道的命令(ios-sim)(二进制文件位于/ usr/local/bin,$ PATH知道).但是,当由xcodebuild调用时,控制台会记录"未找到命令".

我能够手动执行命令,但我不知道为什么它在运行脚本中不起作用.我检查过用户,但正如我预期的那样,两次都是同一个用户......

调用ios-sim的行:

ios-sim launch $(dirname $TEST_HOST) $environment_args --args -SenTest All $test_bundle_path -v
Run Code Online (Sandbox Code Playgroud)

bash xcode xcodebuild ios run-script

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

防止立即调用接收器接收值关闭

考虑以下代码(您可以直接将其 c&p 到操场中):

class Foo: ObservableObject {
    @Published var bar = "bar"
}

let foo = Foo()
let someSubscriber = foo.$bar
    .sink { value in
        print("value is \(value)")
    }
Run Code Online (Sandbox Code Playgroud)

尽管 Foo 刚刚初始化一次并且它的成员bar从未改变,但接收器receiveValue立即执行它的关闭。有什么办法可以防止这个初始调用发生,例如,有没有我可能忽略的操作员?

swift swiftui combine

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

在UINavigationController逻辑中的searchDisplayController.searchResultsTableView的行为

我在UINavigationController中有一个普通的UITableViewController.前者包括连接到搜索显示控制器的搜索栏.我使用标准行为,即当用户输入任何字符时,搜索结果表视图覆盖正常的表视图.

现在,两个表视图都在导航控制器中起作用.如果我从搜索结果表视图中选择一个项目,则会将新的uitableviewcontroller(包含所选项目的特定信息)推送到导航堆栈.当我点击该控制器上的后退按钮时,我发现了一个奇怪的行为:普通表视图的节标题覆盖了我的搜索结果表视图的节标题.它们显示为正在显示我的正常表视图(我可以从标题之间的行数看到,尽管行保持为空).仍在显示搜索结果表行.

这种行为来自于我在viewWillAppear上重新加载表视图的事实.我这样做是为了对用户在应用程序中的某个其他位置或自动后台数据更新中对数据库所做的更改做出反应.我已经尝试轮询是否通过显示最近显示的表视图

(self.tableView == self.searchDisplayController.searchResultsTableView)
Run Code Online (Sandbox Code Playgroud)

但是在我返回普通的表视图控制器后,该语句始终为false.

问题:如何轮询表视图的正确状态以避免显示错误?

iphone objective-c uitableview uinavigationcontroller

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

没有缓存版本的 android 3.6.1 离线可用

无法解析配置 ':classpath' 的所有工件。:无法解析 com.android.tools.build:gradle:3.6.1。

引起:org.gradle.internal.resolve.ModuleVersionResolveException:没有缓存版本的 com.android.tools.build:gradle:3.6.1 可用于离线模式。

我将 Android Studio 升级到 5.6.1,但它拒绝同步。它在我升级 Android Studio 时开始。

android

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