-2

これはURLです

assets-library://asset/asset.JPG?id=CF2AF034-9CF7-4472-9185-5EEFA1614A07&ext=JPG

私は手に入れたい:

CF2AF034-9CF7-4472-9185-5EEFA1614A07

どうすればいいですか?これを実現できるNSURLのメソッドはありますか?

これは私がしたことです:

-(NSString *) fgetTokenWithPre:(NSString *) pre andPost:(NSString*) post startSearch:(NSUInteger) start
{
NSRange rangeToSearch;
rangeToSearch.location = start;
rangeToSearch.length =self.length-rangeToSearch.location;

NSRange preRange = [self rangeOfString:self options:NSCaseInsensitiveSearch range:rangeToSearch];

結果

(lldb) po self
$6 = 0x1e54f130 id=00000000-0000-0000-0000-0000000005E9&ext=JPG
(lldb) po pre
$7 = 0x0021d8a0 id=
(lldb) p preRange
(NSRange) $8 = location=0, length=47

しかし、それは意味がありません。自己が47の長さであることは明らかであり、私はたった3つの長さのプレを探しています。では、なぜpreRangeは[0,47]なのですか?

4

2 に答える 2

0

以下のコードブロックは、おそらくあなたが求めていることを行うでしょう

__block NSString *queryID;
[[[url query] componentsSeparatedByString:@"&"] enumerateObjectsUsingBlock:^(NSString *queryString, NSUInteger idx, BOOL *stop) {
  NSArray *query = [queryString componentsSeparatedByString:@"="];
  if ([query[0] isEqualToString:@"id"]) {
    queryID = query[1];
    *stop = YES;
  }
}];

NSLog(@"ID value = %@", queryID);

ただし、あまり安全ではありません。queryこれは、整形式の URL と、配列に (少なくとも) 2 つの値があることを前提としています。

于 2013-02-25T04:56:56.430 に答える
0
NSUrl *asseturl = [NSURL URLWithString:@"assets-library://asset/asset.JPG?id=CF2AF034-9CF7-4472-9185-5EEFA1614A07&ext=JPG"];


ALAssetsLibraryAssetForURLResultBlock resultblock = ^(ALAsset *myasset)
{
    ALAssetRepresentation *rep = [myasset defaultRepresentation];
    CGImageRef iref = [rep fullResolutionImage];
    if (iref) {
        largeimage = [UIImage imageWithCGImage:iref];
        [largeimage retain];
    }
};

//
ALAssetsLibraryAccessFailureBlock failureblock  = ^(NSError *myerror)
{
    NSLog(@"booya, cant get image - %@",[myerror localizedDescription]);
};

if(mediaurl && [mediaurl length] && ![[mediaurl pathExtension] isEqualToString:AUDIO_EXTENSION])
{
    [largeimage release];
    NSURL *asseturl = [NSURL URLWithString:mediaurl];
    ALAssetsLibrary* assetslibrary = [[[ALAssetsLibrary alloc] init] autorelease];
    [assetslibrary assetForURL:asseturl 
                   resultBlock:resultblock
                  failureBlock:failureblock];
}

}

于 2013-02-25T05:07:20.673 に答える