Η εφαρμογή ενός εκπροσώπου ποσόστωση βάση δεδομένων WebView

ψήφοι
3

Πώς μπορώ να εφαρμόσει αυτή τη μέθοδο (βλέπε παρακάτω); Είμαι νέος σε Objective-C και είμαι απλά δεν το πάρει σωστό.

Από: http://lists.apple.com/archives/Webkitsdk-dev/2008/Apr/msg00027.html

Από προεπιλογή βάσεις δεδομένων έχουν ποσόστωση 0? η ποσόστωση αυτή πρέπει να αυξηθεί πριν από οποιαδήποτε βάση δεδομένων θα αποθηκευτούν στο δίσκο.

Οι πελάτες WebKit θα πρέπει να εφαρμόσει τη μέθοδο WebUIDelegate - webView:frame:exceededDatabaseQuotaForSecurityOrigin:database:και να αυξήσει την ποσόστωση όπως επιθυμείτε, όταν η μέθοδος ονομάζεται. Η μέθοδος αυτή ορίζεται στην WebUIDelegatePrivate.h. Προστέθηκε πολύ αργά στον προηγούμενο κύκλο κυκλοφορίας για να το κάνει σε μια μη-ιδιωτική μπάλα. Θα ήταν χρήσιμο να υποβάλετε ένα σφάλμα σχετικά με τη μετακίνηση αυτή την κλήση για να WebUIDelegate.h έτσι ώστε να αποτελεί μέρος της επίσημης API.

Γιάννης

Δημοσιεύθηκε 09/12/2008 στις 19:52
πηγή χρήστη
Σε άλλες γλώσσες...                            


4 απαντήσεις

ψήφοι
3

Σε ό, τι τάξη που έχετε ορίσει ως εκπρόσωπο για WebView σας θα πρέπει να εφαρμόσει τη μέθοδο αυτή, κάτι σαν αυτό:

- (void)webView:(WebView *)sender frame:(WebFrame *)frame exceededDatabaseQuotaForSecurityOrigin:(WebSecurityOrigin *)origin database:(NSString *)databaseIdentifier {
    unsigned long long newQuotaBytes = 10 * 1024 * 1024;
    [origin setQuota:newQuotaBytes];

    // origin also responds to -usage method to return current size for all databases in this origin
}
Απαντήθηκε 09/12/2008 στις 22:21
πηγή χρήστη

ψήφοι
1

Πήρε κάποια βοήθεια από έναν πίνακα συζήτησης:

Φαίνεται να υπάρχει μια εφαρμογή αυτής της μεθόδου περιλαμβάνονται στο WebKitTools WebKit στο δημόσιο SVN τους εκεί. (Η τάξη ονομάζεται UIDelegate). http://trac.webkit.org/browser/trunk/WebKitTools/DumpRenderTree/mac/U ...

Υποθέτω ότι έχετε δημιουργήσει ένα πληρεξούσιο για την προβολή WebKit σας. Σε αυτή την κατηγορία εκπρόσωπος, να δημιουργήσει μια μέθοδο με την υπογραφή:

- (void)webView:(WebView *)sender frame:(WebFrame *)frame
exceededDatabaseQuotaForSecurityOrigin:(WebSecurityOrigin *)origin
database:(NSString *)databaseIdentifier;

Πιθανόν να χρησιμοποιήσετε μια τροποποιημένη έκδοση της εφαρμογής UIDelegate του:

- (void)webView:(WebView *)sender frame:(WebFrame *)frame
exceededDatabaseQuotaForSecurityOrigin:(WebSecurityOrigin *)origin
database:(NSString *)databaseIdentifier
{
    static const unsigned long long defaultQuota = 5 * 1024 * 1024;
    [origin setQuota:defaultQuota];
}

Δεν έχω δοκιμάσει αυτό, έτσι YMMV.

Jon

Απαντήθηκε 09/12/2008 στις 22:12
πηγή χρήστη

ψήφοι
0

Αυτό λειτούργησε για μένα: https://stackoverflow.com/a/8975014/146099 - είναι μια μικρή παραλλαγή Απάντηση του Jeff.

Απαντήθηκε 23/01/2012 στις 17:34
πηγή χρήστη

ψήφοι
0

Εδώ είναι η τελική απάντηση.

Ήμουν χρησιμοποιώντας το δείγμα εφαρμογής minibrowser.

Σε MyDocument.m Πρόσθεσα αυτή τη λειτουργία:

- (void)webView:(WebView *)sender frame:(WebFrame *)frame exceededDatabaseQuotaForSecurityOrigin:(id)origin database:(NSString *)databaseIdentifier
{
    static const unsigned long long defaultQuota = 5 * 1024 * 1024;
    if ([origin respondsToSelector: @selector(setQuota:)]) {
        [origin setQuota: defaultQuota];
    } else { 
        NSLog(@"could not increase quota for %@", defaultQuota); 
    }
} 
Απαντήθηκε 10/12/2008 στις 07:11
πηγή χρήστη

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more