Frage

Ich baute ein einfaches mac Dateneingabe Tool, das ich mit einer iPhone-Anwendung verwenden. Ich habe Thumbnail dem vor kurzem habe ich über ein Bild hinzugefügt Gut mit einfachen Bindungen. Es ist ein wandelbarer Datentyp, die zu funktionieren scheint.

Das aber iPhone-Anwendung werden die Bilder nicht zeigen. Das Attribut ist nicht null, aber ich kann nicht ein Bild bekommen zu erscheinen. Im Folgenden ist für cellForRowAtIndexPath

static NSString *CellIdentifier = @"Cell";

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
    cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
}

NSManagedObject *entity = nil;
if ([self.searchDisplayController isActive])
    entity = [[self filteredListContent] objectAtIndex:[indexPath row]];
else
    entity = [fetchedResultsController objectAtIndexPath:indexPath];
cell.textLabel.text = [entity valueForKey:@"name"];
//cell.imageview.image = [UIImage imageNamed:@"ImageB.jpeg"]; //works fine
cell.imageView.image = [entity valueForKey:@"thumbnail"];//no error, but no file

return cell;

Ich denke, entweder ist das Problem mit dem umwandelbaren (ich die Standard-NSKeyedUnarchiveFromData bin mit), oder wie ich die Vorschau nenne. Ich bin ein Neuling so wäre jede Hilfe sehr geschätzt werden.

War es hilfreich?

Lösung

Sounds wie Sie das Bild als NSImage auf dem Desktop sind die Speicherung und das Objekt auf dem iPhone ist nicht vorhanden. Ihre Desktop-Anwendung braucht das Bild etwas zu speichern, die tragbar ist, ein PNG oder JPG usw. Dann werden Sie in der Lage sein, um es zu laden zurück in Ihre iPhone-Anwendung als UIImage.

Update re umwandelbar

Sounds wie Sie vorbei noch in einem NSImage auf das Attribut und es denkt man es Daten umgehen. Sie müssen es zu einem „Standard“ Format konvertieren zunächst wie folgt aus:

NSBitmapImageRep *bits = [[myImage representations] objectAtIndex: 0];

NSData *data = [bits representationUsingType:NSPNGFileType properties:nil];
[myManagedObject setImage:data];

Ich empfehle Schreiben von benutzerdefinierten Zugriffs dies zu handhaben, wie die folgenden:

#ifdef IPHONEOS_DEPLOYMENT_TARGET

- (void)setImage:(UIImage*)image
{
  [self willChangeValueForKey:@"image"];

  NSData *data = UIImagePNGRepresentation(image);
  [myManagedObject setImage:data];
  [self setPrimitiveValue:data forKey:@"image"];
  [self didChangeValueForKey:@"image"];
}

- (UIImage*)image
{
  [self willAccessValueForKey:@"image"];
  UIImage *image = [UIImage imageWithData:[self primitiveValueForKey:@"image"];
  [self didAccessValueForKey:@"image"];
  return image;
}

#else

- (void)setImage:(NSImage*)image
{
  [self willChangeValueForKey:@"image"];
  NSBitmapImageRep *bits = [[image representations] objectAtIndex: 0];

  NSData *data = [bits representationUsingType:NSPNGFileType properties:nil];
  [myManagedObject setImage:data];
  [self setPrimitiveValue:data forKey:@"image"];
  [self didChangeValueForKey:@"image"];
}

- (NSImage*)image
{
  [self willAccessValueForKey:@"image"];
  NSImage *image = [[NSImage alloc] initWithData:[self primitiveValueForKey:@"image"]];
  [self didAccessValueForKey:@"image"];
  return [image autorelease];
}

#endif

Dies gibt Ihnen eine bedingte Kompilierung und wird die Daten als NSData (im PNG-Format) speichern, die auf jedem Gerät abgerufen werden kann.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top