【发布时间】:2016-08-09 07:05:18
【问题描述】:
我有一个 swift 应用程序。主类 viewdidload 调用了一个 Objective-c 函数。
objective-c 函数扫描数据库,然后将其放入 NSMutableArray。
我需要在 swift 函数中使用 NSMutable 数组。
问题是这样的:我在swift中调用了objective-c函数,然后使用了数组,但它在数组被填充之前就使用了(nil)。
所以我需要 swift 等待 Objective-c 函数成功返回值,然后再唱数组。
我见过多个例子,但不是从一种语言到另一种语言。有人说使用完成处理程序,其他人说这不是最好的方法。然后其他人说通知。
我是 IOS 新手,非常感谢您的帮助。
编辑添加代码
scanTable 函数(目标 C):
#import "ScanTable.h"
#import "Mapper.h"
@implementation ScanTable
- (void) scanTableDo {
AWSDynamoDBObjectMapper *dynamoDBObjectMapper = [AWSDynamoDBObjectMapper defaultDynamoDBObjectMapper];
AWSDynamoDBScanExpression *scanExpression = [AWSDynamoDBScanExpression new];
scanExpression.limit = @10;
[[dynamoDBObjectMapper scan:[Mapper class]
expression:scanExpression]
continueWithBlock:
^id(AWSTask *task) {
if (task.error) {
NSLog(@"The request failed. Error: [%@]", task.error);
}
if (task.exception) {
NSLog(@"The request failed. Exception: [%@]", task.exception);
}
if (task.result) {
AWSDynamoDBPaginatedOutput *paginatedOutput = task.result;
NSMutableArray *scanResult = [[NSMutableArray alloc] initWithArray:paginatedOutput.items]; //// ADDED /////
}
return nil;
}];
}
@end
主函数(Swift):
override func viewDidLoad() {
super.viewDidLoad()
let scanTable = ScanTable();
scanTable.scanTableDo();
let swiftArray = scanTable.scanResult
}
【问题讨论】:
-
你能展示你的代码吗?
-
处理OC和Swift很麻烦。而且你的问题太笼统了。
-
不要听取意见。找到一些你可以实施并开始工作的东西。随着您获得更多编程经验,您应该对所涉及的问题以及为什么一种方法优于另一种方法有更深入的了解。
-
嗨 @AdamPro13 和 Lumialxk 感谢您的回复。我已经添加了代码。希望这会有所帮助。
-
@Avi 根据我的问题,我找不到适用的方法。否则我会的。不过还是谢谢。
标签: ios objective-c event-handling