我正在关注http://gabriel.github.com/gh-unit/docs/appledoc_include/guide_testing.html上的教程.问题是我的项目使用ARC而GHUnit没有.我管理过以前的错误,但现在我应该做桥接演员,我从未使用过,而且我迷路了.
NSString *string1 = @"a string";
GHAssertNotNULL(string1, nil); //error here
Run Code Online (Sandbox Code Playgroud)
错误描述:将Objective-C指针类型'NSString*'隐式转换为C指针类型'const void*'需要桥接转换.
任何帮助欢迎:)
我已经实现了这样的课程:
class MapLayoutGuide: NSObject, UILayoutSupport {
var insetLength: CGFloat = 0
init(insetLength: CGFloat) {
self.insetLength = insetLength
}
var length: CGFloat {
return insetLength
}
}
Run Code Online (Sandbox Code Playgroud)
一切都运行良好,但新的iOS版本引入了新的变化:Apple changelog.
所以现在我收到3个错误:
Protocol requires property 'topAnchor' with type 'NSLayoutYAxisAnchor'
, Protocol requires property 'bottomAnchor' with type 'NSLayoutYAxisAnchor'
, Protocol requires property 'heightAnchor' with type 'NSLayoutDimension'
.考虑UILayoutSupport
实现我可以看到新的变量:
@available(iOS 9.0, *)
var topAnchor: NSLayoutYAxisAnchor { get }
@available(iOS 9.0, *)
var bottomAnchor: NSLayoutYAxisAnchor { get }
@available(iOS 9.0, *)
var …
Run Code Online (Sandbox Code Playgroud) 系统崩溃日志:
Crashed: com.apple.main-thread
EXC_BAD_ACCESS KERN_INVALID_ADDRESS at 0x12121212
libobjc.A.dylib - objc_msgSend - isEqual:
CoreFoundation - -[__NSDictionaryM setObject:forKey:]
Run Code Online (Sandbox Code Playgroud)
码:
if (object) {
[_objects setObject:object forKey:key];
}
Run Code Online (Sandbox Code Playgroud)
当_objects的init在代码中更早出现时:
- (id)init {
self = [super init];
if (self) {
_objects = [[NSMutableDictionary alloc] init];
}
return self;
}
Run Code Online (Sandbox Code Playgroud)
对象可以是零值,这就是我检查它是否存在的原因:
AFHTTPRequestOperation *object = [[AFHTTPRequestOperation alloc] initWithRequest:request];
Run Code Online (Sandbox Code Playgroud)
我不确定究竟会导致什么.崩溃很少发生,我无法重现它,但有些用户得到它.我假设有一些东西被解除分配,这可能_objects
是零吗?或整个控制器被解除分配?为什么我能isEqual
在日志中看到?
这可以解决这个问题吗?
if (object && _objects) {
[_objects setObject:object forKey:key];
}
Run Code Online (Sandbox Code Playgroud) 我正在创建一个cocoapod.到.podspec我添加了这一行:
cs.dependency 'Google-API-Client', '~> 1.0'
Run Code Online (Sandbox Code Playgroud)
从那时起,我无法将我的框架推向spec repo.中
pod repo push company-private MyFramework.podspec --allow-warnings --verbose
Run Code Online (Sandbox Code Playgroud)
我可以看到以下问题:
ERROR | [MyFramework/Core] Google-API-Client/Source/Objects/GTLService.m:86:1: error: duplicate interface definition for class 'GTMHTTPUploadFetcher'
Run Code Online (Sandbox Code Playgroud)
我不知道如何解决它.尝试:
sudo rm -fr ~/Library/Caches/CocoaPods/
sudo rm -fr ~/.cocoapods/repos/master/
sudo rm -fr Pods/
Run Code Online (Sandbox Code Playgroud)
但这没有帮助.这似乎是Google-API-Client的错误,但他们的响应时间是如此之大(等待上一张票的大约6个月,仍未解决),我等不了多久.任何人都知道如何跳过这个问题?在我的机器上本地构建确实有效.
我在项目的一个版本中遇到了一些问题。我找到了这个答案,有人建议从机器中删除所有与 cocoapods 连接的东西并重新安装它。我确实按照以下步骤操作:
$ 'pod --version'
0.36.1
$ gem list --local | grep cocoapods
cocoapods (0.39.0.rc.1, 0.38.2, 0.38.1, 0.37.2)
cocoapods-core (0.39.0.rc.1, 0.38.2, 0.38.1, 0.37.2)
cocoapods-downloader (0.9.3, 0.9.1)
cocoapods-plugins (0.4.2)
cocoapods-search (0.1.0)
cocoapods-stats (0.6.2, 0.5.3)
cocoapods-trunk (0.6.4, 0.6.1)
cocoapods-try (0.5.1, 0.4.5)
$ gem uninstall cocoapods // and all others from the list above
Run Code Online (Sandbox Code Playgroud)
问题是,当我再次 grep 所有 cocoapods 时,列表等于上一个,没有任何消失。
$ sudo gem uninstall cocoapods
Select gem to uninstall:
1. cocoapods-0.37.2
2. cocoapods-0.38.1
3. cocoapods-0.38.2
4. cocoapods-0.39.0.rc.1
5. All versions
> …
Run Code Online (Sandbox Code Playgroud) 如何知道我通过 Carthage 安装了哪些版本的依赖项?
Cartfile.resolved 仅通知我的项目的依赖项,但不通知我的项目的依赖项的依赖项..?
我正在尝试访问我之前下载的文件NSURLSession
。看来我无法读取文件的位置,即使我在委托方法结束之前执行此操作(因为文件是临时的)。
尽管如此,当我尝试访问从错误 257nil
返回的位置下的数据时,我还是遇到了错误。NSURLSession delegate
代码如下:
- (void)URLSession:(NSURLSession *)session downloadTask:(NSURLSessionDownloadTask *)downloadTask didFinishDownloadingToURL:(NSURL *)location {
NSError *movingError = nil;
NSData *fileData = [NSData dataWithContentsOfFile:location.path options:0 error:&movingError]; // is nil
NSLog(@"%@", movingError); // is error 257
}
Run Code Online (Sandbox Code Playgroud)
这段代码有什么问题..?我看到类似的问题NSURLSessionDownloadTask - downloads but attempts to error和iPhone - 将文件从资源复制到文档给出错误,但这些完全不适用于我的情况。
- 编辑 -
我创建了一个新项目并粘贴了完全相同的代码。它有效...所以:
1)在我的项目中,我收到错误 257,可能项目的某些配置无效,或者我在应用程序的其他地方使用 backgroundTasks 的事实把事情弄乱了
2)如果我将此下载的源文件放入 Carthage 链接的外部框架,则会发生与 1 相同的情况
3)在我创建的演示项目(复制粘贴1和2中使用的文件)中,一切正常。
如果有人知道是什么导致了它不起作用——那就太棒了。
我不知道如何使用测量来获取单位的全名。例如“公里”而不是“km”。
let measurement = Measurement(value: 50, unit: UnitLength.meters)
let convertedMeasurement = measurement.converted(to: UnitLength.kilometers)
let value = convertedMeasurement.value // 0.05
let unitSymbol = convertedMeasurement.unit.symbol // km
let unit = convertedMeasurement.unit.? // I expect the output to be "kilometers"
Run Code Online (Sandbox Code Playgroud) 我正在尝试导入一个至少是 iOS 10 的框架(carthage)。我的项目最低版本是 iOS 9,我想保留它。我已经执行了以下步骤:
@available(iOS 11.0, *)
高于该类(由于不同的原因,我希望它们高于 iOS 11 而不是 10),other linker flag
了weak_framework FrameworkName
Module file's minimum deployment target is ios10.0
编译器仍然对next 语句不满意import FrameworkName
。我还需要做什么才能使我的 iOS 9 项目与此类 iOS 10 框架兼容?我已经看过这个 SOF 问题和本教程- 看来我已经做了它工作所需的一切。
我正在尝试学习与SwiftUI结合,并且正在努力如何使用ObservableObject
(以前BindableObject
)从UIKit更新视图。问题是,很明显,updateUIView
一旦@Published
对象发送更改通知,方法就不会触发。
class DataSource: ObservableObject {
@Published var locationCoordinates = [CLLocationCoordinate2D]()
var value: Int = 0
init() {
Timer.scheduledTimer(withTimeInterval: 3, repeats: true) { timer in
self.value += 1
self.locationCoordinates.append(CLLocationCoordinate2D(latitude: 52, longitude: 16+0.1*Double(self.value)))
}
}
}
struct MyView: UIViewRepresentable {
@ObservedObject var dataSource = DataSource()
func makeUIView(context: Context) -> MKMapView {
MKMapView(frame: .zero)
}
func updateUIView(_ view: MKMapView, context: Context) {
let newestCoordinate = dataSource.locationCoordinates.last ?? CLLocationCoordinate2D(latitude: 52, longitude: 16)
let annotation = MKPointAnnotation() …
Run Code Online (Sandbox Code Playgroud) ios ×5
objective-c ×4
swift ×4
cocoapods ×2
xcode ×2
carthage ×1
combine ×1
frameworks ×1
gem ×1
gh-unit ×1
ios9 ×1
mapkit ×1
measurement ×1
nsurlsession ×1
permissions ×1
ruby ×1
swiftui ×1
uikit ×1