0

Twitterから写真を読み込もうとしています。エンコードせずに json の結果で URL を使用すると、dataWithContentsOfURLnil URL 引数が取得されます。エンコードすると、次のようになります

%0A%20%20%20%20%22http://example.com/example.jpg%22%0A.

rangeOfString:またはを使用できることはわかってstringByReplacingOccurrencesOfString:いますが、常に同じであると確信できますか?

私も試してみました

stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]

そしてそれは何もしません。

これはjsonから直接URLです...

2013-11-08 22:09:31:812 JaVu[1839:1547] -[SingleEventTableViewController tableView:cellForRowAtIndexPath:] [Line 406] (
    "http://pbs.twimg.com/media/BYWHiq1IYAAwSCR.jpg"
)

これが私のコードです

if ([post valueForKeyPath:@"entities.media.media_url"]) {
        NSString *twitterString = [[NSString stringWithFormat:@"%@", [post valueForKeyPath:@"entities.media.media_url"]]stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];
        twitterString = [twitterString stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
        NSLog(@"%@", twitterString);

        if (twitterString != nil){
            NSURL *twitterPhotoUrl = [NSURL URLWithString:twitterString];
            NSLog(@"%@", twitterPhotoUrl);
            dispatch_queue_t queue = kBgQueue;
            dispatch_async(queue, ^{
                NSError *error;
                NSData* data = [NSData dataWithContentsOfURL:twitterPhotoUrl options:NSDataReadingUncached error:&error];
                UIImage *image = [UIImage imageWithData:data];

                dispatch_sync(dispatch_get_main_queue(), ^{
                    [streamPhotoArray replaceObjectAtIndex:indexPath.row withObject:image];
                    cell.instagramPhoto.image = image;
                });
            });
        }
    }
4

3 に答える 3

1

答えではなく、エラーを解決するためのステップです。コードをこれに変更し、出力を投稿してください。複数のメソッド呼び出しを 1 つにまとめると、デバッグが難しくなります。

NSLog(@"post: '%@", post);
NSString * twitterString;
twitterString = [post valueForKeyPath:@"entities.media.media_url"];
NSLog(@"twitterString 1: '%@", twitterString);
twitterString = [twitterString stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];
NSLog(@"twitterString 2: '%@", twitterString);
        twitterString = [twitterString stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
NSLog(@"twitterString 3: '%@", twitterString);

ところで、[NSString stringWithFormat:@"%@"...必要ありません。

于 2013-11-09T04:18:51.657 に答える