我正在使用MPMediaQuery,特别是播客。在这种特殊情况下,我很难用Optionals和包装/解包。
titleFilter = MPMediaPropertyPredicate(value: selectedPodcastTitle, forProperty: MPMediaItemPropertyPodcastTitle, comparisonType: .equalTo)
qryPodcasts.addFilterPredicate(titleFilter)
for junk in qryPodcasts.items!{
//works fine
if let sTitle = junk.title {
print("episode title: \(sTitle)")
}else{
print("episode title is nil")
}
//works fine
if let dRelease = junk.releaseDate {
print("episode release date: \(dRelease)")
}else{
print("episode release date is nil")
}
if #available(iOS 10.0, *) {
// can't figure out how to make this work
// crashes on some podcasts and I suspect it's when 'addedDate' is nil
if let dAdded: Date = junk.dateAdded {
print("episode added date: \(junk.dateAdded)")
}else{
print("episode added date is nil")
}
} else {
print("episode added date is not available")
}
}
答案 0 :(得分:0)
在上次讨论之后,dateAdded
具有不可为空的类型Date
,并且当它= nil时发生崩溃。
所以我建议你输入Date?
,你应该打开它。
if let dAdded = junk.dateAdded {
}
或在这种情况下检查nil
。
if junk.dateAdded != nil {
}
答案 1 :(得分:0)
似乎在当前的iOS SDK中错误地注释了declare namespace ms = "http://schemas.openxmlformats.org/spreadsheetml/2006/main" ;
declare namespace ns2 = "http://www.example.com/";
declare function local:AgentReport()
{
<AgentReport>
<Report>
<GroupNumber>1</GroupNumber>
<Quotes>1</Quotes>
<Converted>1</Converted>
<Conv_Rate>1</Conv_Rate>
</Report>
<Report>
<GroupNumber>2</GroupNumber>
<Quotes>2</Quotes>
<Converted>2</Converted>
<Conv_Rate>2</Conv_Rate>
</Report>
</AgentReport>
};
declare function local:getRows( $x ) as element(ms:row)*
{
let $first-row :=
<ms:row>
{
for $i in $x/*/*[1]/child::element()
return
<ms:c t="inlineStr"> <ms:is> <ms:t>{fn:node-name($i)}</ms:t> </ms:is> </ms:c>
}
</ms:row>
return
(
$first-row,
for $each in $x//Report
return
<ms:row>
{
for $i in $each/*
return
<ms:c t="inlineStr"> <ms:is> <ms:t>{$i/string()}</ms:t> </ms:is> </ms:c>
}
</ms:row>
)
};
declare function local:generate-simple-xl-ooxml( $content-types as node(), $workbook as node(), $rels as node(), $workbookrels as node(), $sheet1 as node(), $sheet2 as node() ) as binary()
{
let $manifest := <parts xmlns="xdmp:zip">
<part>[Content_Types].xml</part>
<part>workbook.xml</part>
<part>_rels/.rels</part>
<part>_rels/workbook.xml.rels</part>
<part>sheet1.xml</part>
<part>sheet2.xml</part>
</parts>
let $parts := ($content-types, $workbook, $rels, $workbookrels, $sheet1, $sheet2)
return xdmp:zip-create($manifest, $parts)
};
let $content-types := <Types xmlns="http://schemas.openxmlformats.org/package/2006/content-types">
<Default Extension="rels" ContentType="application/vnd.openxmlformats-package.relationships+xml"/>
<Default Extension="xml" ContentType="application/xml"/>
<Override PartName="/workbook.xml" ContentType="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml"/>
<Override PartName="/sheet1.xml" ContentType="application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml"/>
<Override PartName="/sheet2.xml" ContentType="application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml"/>
</Types>
let $workbook := <workbook xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main" xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships">
<sheets>
<sheet name="Sheet1" sheetId="1" r:id="rId1" />
<sheet name="Sheet2" sheetId="2" r:id="rId2" />
</sheets>
</workbook>
let $rels := <Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships">
<Relationship Id="rId1" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument" Target="workbook.xml"/>
<Relationship Id="rId2" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument" Target="workbook.xml"/>
</Relationships>
let $workbookrels := <Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships">
<Relationship Id="rId1" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/worksheet" Target="sheet1.xml"/>
<Relationship Id="rId2" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/worksheet" Target="sheet2.xml"/>
</Relationships>
let $date := xs:string(fn:current-date())
let $day := fn:tokenize($date, "\+")[1]
let $xml := local:AgentReport()
let $page := xdmp:tidy(xdmp:quote($xml),
<options xmlns="xdmp:tidy">
<input-xml>true</input-xml>
</options>)[2]
let $tables := $page
let $sheet1 := <worksheet xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main">
<sheetData> {local:getRows($tables)} </sheetData>
</worksheet>
let $sheet2 := <worksheet xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main">
<sheetData> {local:getRows($tables)} </sheetData>
</worksheet>
let $package := local:generate-simple-xl-ooxml($content-types, $workbook, $rels, $workbookrels, $sheet1, $sheet2)
let $filename := "ExcelTest.xlsx"
let $disposition := concat("attachment; filename=""",$filename,"""")
let $x := xdmp:add-response-header("Content-Disposition", $disposition)
let $x := xdmp:set-response-content-type("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet")
let $insertReport := xdmp:document-insert(concat("/GroupNumberReport/Group-", $day, ".xlsx"), $package, (), "GroupReport")
let $saveReport := xdmp:save(concat("C:\EriePoc\DataStage-Demo\Report\Group-", $day, ".xlsx"), $package)
return fn:true()
的可空性,您可能需要一些解决方法。
试试此扩展程序:
matchString
并使用它:
var matchTo = $parse(attrs.matchTo);
scope.$watch(function () {
return matchTo(scope).matchString;
}, function (value) {
console.log(value);
});
您最好向Apple发送有关此问题的错误报告。 (它可能被归类为重复,但数量可能会影响。)