簡體   English   中英

Objective-C-具有ALAsset和XmlWriter的EXC_BAD_ACCESS錯誤

[英]Objective-C - EXC_BAD_ACCESS error with ALAsset and XmlWriter

我目前正在使用ALAssetLibrary來檢索有關設備(IOS Simulator)上圖像的信息。 現在,我已經有了所需的信息,我想像xml file一樣編寫它們。 為此,我使用了簡單易用的XmlStreamWriterhttps://github.com/skjolber/xswi )。 我的問題是,運行應用程序時出現EXC_BAD_ACCESS (code=1)錯誤。 我知道它與streamWriter有關,因為如果我注釋這行代碼,則該程序可以完美運行。 這是我的代碼(我正在使用ARC ):

XMLWriter* xmlWriter = [[XMLWriter alloc]init];
[xmlWriter writeStartDocumentWithEncodingAndVersion:@"UTF-8" version:@"1.0"];
[xmlWriter writeStartElement:@"Photos"]; 
NSMutableArray *list = [[NSMutableArray alloc] init];
ALAssetsLibrary* library = [[ALAssetsLibrary alloc] init];
[library enumerateGroupsWithTypes:ALAssetsGroupAll usingBlock:^(ALAssetsGroup *group, BOOL *stop) {
if (group) {
   [group setAssetsFilter:[ALAssetsFilter allPhotos]];
   [group enumerateAssetsUsingBlock:^(ALAsset *asset, NSUInteger index, BOOL *stop){
       if (asset){
                [xmlWriter writeStartElement:@"Photos"];
                NSString *description = [asset description];
                NSRange first = [description rangeOfString:@"URLs:"];
                NSRange second = [description rangeOfString:@"?id="];
                NSString *path = [description substringWithRange: NSMakeRange(first.location + first.length, second.location - (first.location + first.length))];
                [xmlWriter writeAttribute:@"id" value:path];
                [xmlWriter writeEndElement:@"Photos"];                    
            }
        }];
    }
} failureBlock:^(NSError *error) {
    NSLog(@"error enumerating AssetLibrary groups %@\n", error);
}];
[xmlWriter writeEndElement];
[xmlWriter writeEndDocument];
NSString* xml = [xmlWriter toString];
NSLog(@"XML: %@", xml);

知道可能是什么問題嗎?

我也有一個帶有相關錯誤的圖像: 錯誤圖片

謝謝

enumerateGroupsWithTypes調用該塊以異步處理找到的信息。 因此,在實際將任何實際內容寫入寫入[xmlWriter writeEndDocument之前,您要調用[xmlWriter writeEndDocument

您需要更改完成寫操作的方式,以使其在塊內以及group作為nil傳遞時完成。 在您現有的支票上添加一個else塊並放入

[xmlWriter writeEndElement];
[xmlWriter writeEndDocument];
NSString* xml = [xmlWriter toString];
NSLog(@"XML: %@", xml);

在其中(以及隨后執行的任何操作)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM