我已將XlsxReaderWritter框架添加到我的應用程序中。我有使用這個框架,這是在一個Excel得到一個工作表的第一步驟的麻煩文件奇怪的錯誤,返回的值類型與函數體中的不同
這裏是我的代碼:
let file = BRAOfficeDocumentPackage.open(syllabusFileURL.relativePath)!
inputFile = file.workbook.worksheets[0] //this line does not compile and gives me this "Type [Any]! has no subscript members"
好了,所以我投它,如下所示:
inputFile = file.workbook.worksheets[0] as! BRAWorksheet
現在它編譯但我得到一個運行時錯誤說:
Could not cast value of type 'BRAWorksheet' (0x10df5fdc0) to 'BRAWorksheet' (0x10ce8e430).
所以似乎值已經BRAWorksheet
,不需要鑄造,但正如我所說,它不會編譯話說型[Any]!
在正式文件的,這裏是他們是如何得到一個工作表;
#####Swift
//First worksheet in the workbook
var firstWorksheet: BRAWorksheet = spreadsheet.workbook.worksheets[0]
//Worksheet named "Foo"
var fooWorksheet: BRAWorksheet = spreadsheet.workbook.createWorksheetNamed("Foo")
由於它是一個導入的框架,我檢查了該函數的原始Objective-C文件。它似乎沒有返回[任何]!這裏是身體:
- (NSArray *)worksheets {
NSMutableArray *worksheets = @[].mutableCopy;
for (BRASheet *sheet in _sheets) {
BRAWorksheet *worksheet = [self.relationships relationshipWithId:sheet.identifier];
worksheet.styles = _styles;
worksheet.sharedStrings = _sharedStrings;
worksheet.calcChain = _calcChain;
[worksheets addObject:worksheet];
}
return worksheets.count ? worksheets : nil;
}
所以任何人都可以告訴我鴨子是怎麼回事?
檢查您的導入庫,也許你有2個庫包含相同類型'BRAWorksheet' – wajeeh
把inputFile行分成兩行怎麼樣?看看你有什麼'workbooks',以及什麼'工作表'? – dfd
@wajeeh你是天賜之物。實際情況就是這樣。我已經導入XlsxReaderWriter作爲項目和通過可可豆莢。我刪除了xcodeproj,現在我可以投射它了。它仍然返回[Any]!雖然 – tdm3732